我使用以下代码打印FlowDocument
: -
var printDialog = new PrintDialog();
var result = printDialog.ShowDialog();
if (!result.Value)
{
return;
}
var pageWidth = printDialog.PrintableAreaWidth;
var pageHeight = printDialog.PrintableAreaHeight;
flowDoc.ColumnWidth = pageWidth;
flowDoc.PageWidth = pageWidth;
flowDoc.PageHeight = pageHeight;
var paginator = ((IDocumentPaginatorSource)flowDoc).DocumentPaginator;
printDialog.PrintDocument(paginator, "Name");
打印对话框将页面显示为A4纵向,但printDialog.PrintableAreaWidth
和.PrintableAreaHeight
的值为1122&分别为793,即 landscape 。
通过对话框更改方向或纸张尺寸对这些值没有影响。发生了什么事?
更新
我添加了一个显示PrintDialog
属性的屏幕截图。请注意PrintTicket属性如何反映正确的页面大小和方向,但两个PrintableArea ...属性是错误的。
我开始认为这是一个有趣的"与打印机/驱动程序。我已经尝试过打印到" XPS Document Writer"打印机,并在查看创建的文件时正确呈现页面。 (如果我查看PrintDialog的属性,PrintableArea ...属性会正确反映A4纵向页面。)