我在打印 XPS 文档时遇到问题。第一个打印工作正常,但随后打印对话框和打印出现损坏,如您在该图像中看到的那样。
我尝试使用 Write 函数的其他重载,例如使用 DocumentPaginator 作为参数或打印对话框的 PrintDocument 函数的重载,但它也不起作用。
我注意到结果取决于打印机的选择。使用 Microsoft XPS Document Writer 可以正常工作,但使用真正的打印机或 PDF 打印机却不能。
这是重现该问题的最简单代码:
public void Execute(object parameter)
{
var printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
PrintDocument(
"xps_document_filename.xps",
printDialog);
}
}
private static void PrintDocument(string documentPath, PrintDialog printDialog)
{
using (var xpsDocumentSource = new XpsDocument(documentPath, FileAccess.Read))
{
XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printDialog.PrintQueue);
xpsDocumentWriter.Write(xpsDocumentSource.GetFixedDocumentSequence());
}
}