我使用 WPF 打印路径来处理在我们的应用程序中创建的大型图表。整个图表由视觉效果组成。
一个所谓的“DesignerPaginator”对图表进行分页(非常简单)。从这一点开始,我做了以下三件事: - 我使用 PrintDialog.PrintDocument(Paginator, Title) 打印文档 - 我还使用 XpsDocumentWriter.Write(Paginator, PrintTicket) 创建了一个 XPS 文档;我保存在硬盘上 - 从 XPSDocument 我将 XpsDocumentWriter.GetFixedDocumentSequence() 分配给 DocumentViewer
简而言之,以下代码很重要:
PrintDialog _pdialog = new PrintDialog();
System.Printing.ValidationResult result = this.PrintQueue.MergeAndValidatePrintTicket(this.PrintQueue.UserPrintTicket, this.PrintTicket);
_pdialog.PrintTicket = result.ValidatedPrintTicket;
XpsDocument _xpsDocument = new XpsDocument("C:\\test.xps",FileAccess.ReadWrite);
XpsDocumentWriter xpsdw = XpsDocument.CreateXpsDocumentWriter(_xpsDocument);
xpsdw.Write(this.Paginator, result.ValidatedPrintTicket);
documentviewer.Document = _xpsDocument.GetFixedDocumentSequence();
_xpsDocument.Close();
_pdialog.PrintQueue = this.PrintQueue;
_pdialog.PrintDocument(this.Paginator, "Model Test");
输出如下:
硬盘上的 XPS -> 绝对模糊。你什么都认不出来。它就像一个 100 倍缩放的 GIF 文件。DocumentViewer 中 XPSDocument 中的 FixedDocumentSequence -> Perfect。这应该是 XPS 文件的意思 打印输出 -> 可怕,模糊,但至少比 xps 文件好得多
现在是神秘的部分:如果我直接从 DocumentViewer 打印(其中 FixedDocumentSequence 看起来很完美),我会从第一次打印中得到相同的模糊输出。
我对这种情况的想法是 WPF 的 XPS 系统对内容进行光栅化,并将这些内容作为低质量位图放置在 xps 文档中。都是向量,尽管如此,输出对于低分辨率位图来说似乎总是很熟悉。
我将不胜感激任何帮助。我没主意了。我尝试了很多来调试这个问题,但不知何故,它似乎同时又简单又微妙。