0

我在打印 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());
    }
}
4

0 回答 0