我正在使用 System.Windows.Controls.PrintDialog 打印 XPS 文档。当我在打印对话框中选择横向时,生成的页面旋转为横向,但实际内容保持纵向模式并被剪裁。
这就是我打印的方式。我还尝试使用 PrintDialog.PrintQueue 上的 AddJob 方法和 PrintQueue.CreateXpsDocumentWriter(...).Write(...) 上的重载方法,结果都相同或更差。我尝试将 DocumentPaginator.PageSize、printDialog.PrintTicket.PageMediaSize 以及第一个 FixedPage 的宽度和高度设置为正确的横向大小,但没有结果。PrintDialog.PrintTicket.PageOrientation 在横向上,而 PrintDialog.PrintableAreaWidth 和 PrintDialog.PrintableAreaHeight 在显示 PrintDialog 后选择横向时应如此。
var printDialog = new PrintDialog
{
MaxPage = (uint)pageCount,
MinPage = 1,
PageRange = new PageRange(1, pageCount),
UserPageRangeEnabled = true
};
if (printDialog.ShowDialog() != true) return;
using (var doc = new XpsDocument(filename, FileAccess.Read))
{
var paginator = doc.GetFixedDocumentSequence().DocumentPaginator;
printDialog.PrintDocument(fds.paginator , "myPrintJob");
}