[WPF 学习] 7.2 模板打印

利用FlowDocument进行模板打印

xaml

    <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进行替换,不知道也没有其他办法?

原文地址:https://www.cnblogs.com/catzhou/p/12505216.html