WPF FlowDocument 仅打印到小区域
WPF FlowDocument printing only to small area
我正在使用 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
和分页器中的尺寸,它们似乎没问题:
那么,是什么导致了这个问题,我该如何解决?
这是我使用的一些代码
flowDocument.PagePadding = new Thickness(standardThickness);
flowDocument.ColumnGap = 0;
flowDocument.ColumnWidth = printDialog.PrintableAreaWidth;
您需要告诉流文档它是一列,并告诉流文档打印机的宽度。
我正在使用 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
和分页器中的尺寸,它们似乎没问题:
那么,是什么导致了这个问题,我该如何解决?
这是我使用的一些代码
flowDocument.PagePadding = new Thickness(standardThickness);
flowDocument.ColumnGap = 0;
flowDocument.ColumnWidth = printDialog.PrintableAreaWidth;
您需要告诉流文档它是一列,并告诉流文档打印机的宽度。