利用FlowDocument進行模板打印code
xamlit
<DockPanel > <Button Content="Preview" Margin="15" Click="Button_Click_1" DockPanel.Dock="Bottom" Height="76"/> <FlowDocumentPageViewer VerticalAlignment="Top" Width="300" Name="fd" BorderBrush="Blue" BorderThickness="2"> <FlowDocument PagePadding="38" > <Paragraph TextAlignment="Center"> <Run FontFamily="宋體" FontWeight="Bold">酒店名稱:</Run> [HotelName] </Paragraph> <BlockUIContainer> <Line X1="0" Y1="0" X2="800" Y2="0" Stroke="Black"/> </BlockUIContainer> <Paragraph> <Run FontWeight="Bold">日期:</Run> [Date] </Paragraph> </FlowDocument> </FlowDocumentPageViewer> </DockPanel>
代碼模板
private void Button_Click_1(object sender, RoutedEventArgs e) { var filename = @"test.xaml"; using (FileStream fs = new FileStream(filename, FileMode.OpenOrCreate)) { XamlWriter.Save(fd.Document, fs); } var sts = File.ReadAllText(filename); sts = sts.Replace("[HotelName]", "NaradaHotel") .Replace("[Date]", DateTime.Now.ToLongDateString()); var d = ((IDocumentPaginatorSource)XamlReader.Parse(sts)).DocumentPaginator; PrintDialog pd = new PrintDialog(); pd.PrintDocument(d, "test"); }
用String.Replace進行替換,不知道也沒有其餘辦法?test