【问题标题】:WPF FlowDocument printing only to small areaWPF FlowDocument 仅打印到小区域
【发布时间】:2016-07-05 21:47:16
【问题描述】:

我正在使用 FlowDocument、FlowDocumentPaginator 和 PrintDialog 在 WPF 中打印纯文本。我的做法是基于this article,实现如下:

        var printDialog = new PrintDialog();
        if (printDialog.ShowDialog() == true)
        {
            var flowDocument = new FlowDocument();

            var paragraph = new Paragraph();
            paragraph.FontFamily = new FontFamily("Courier New");
            paragraph.FontSize = 10;
            paragraph.Margin = new Thickness(0);
            paragraph.Inlines.Add(new Run(this.textToPrint));

            flowDocument.FontSize = 10;
            flowDocument.Blocks.Add(paragraph);

            var paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
            printDialog.PrintDocument(paginator, "Chit");
        }

这适用于打印宽度较窄的东西。但是当我尝试打印一个长字符串时,它都被塞进了一个小区域:

我在打印对话框的PrintTicket 和分页器中检查了尺寸,它们似乎没问题:

那么,是什么导致了这个问题,我该如何解决呢?

【问题讨论】:

  • 我不在工作,但我可以告诉你它正在创建两列。做一个长文档,你会看到的。您需要告诉流文档它是一列,并告诉流文档打印机的宽度。
  • 观察力不错。您能否在方便时详细说明如何在答案中实施您的建议? [编辑:我看到你已经这样做了。谢谢。]

标签: c# wpf printing flowdocument


【解决方案1】:

这是我使用的一些代码

flowDocument.PagePadding = new Thickness(standardThickness);
flowDocument.ColumnGap = 0;
flowDocument.ColumnWidth = printDialog.PrintableAreaWidth;

您需要告诉流程文档它是一列,并告诉流程文档打印机的宽度。

【讨论】:

  • 完美,这行得通。我只是建议您在答案中添加您在评论(两栏内容)中写的内容,以便人们可以在其中找到所有相关信息。
猜你喜欢
  • 2010-09-25
  • 1970-01-01
  • 2011-05-14
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多