从WPF打印太慢

时间:2011-08-12 19:45:41

标签: c# wpf

我有一个WPF应用程序,我需要从中打印。我之前发布过一个关于打印的问题,而不需要显示确认窗口,并得到了一个很好的答案,我已经实现了如下

var pq = LocalPrintServer.GetDefaultPrintQueue();
var writer = PrintQueue.CreateXpsDocumentWriter(pq);
var paginator = newPass.docMain.Document.DocumentPaginator;
writer.Write(paginator);

这段代码很简单 - 它基本上只需要获取本地打印机que并发送XPS文档。但是,打印速度相对较慢。我试图缩小可能性,看起来WinXP和Win7机器之间的速度差异最大。在XP上它很慢但是可以接受,在Win7上打印大约2-3秒时它可以超过10秒15秒并不罕见。这个代码在速度方面会有这么大的差异吗?另外,我注意到这里有一些关于WPF打印速度的问题 - WPF打印一般是否有慢的原因?

4 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我看到的大多数打印速度问题都与打印机驱动程序有关。打印机驱动程序的任务是将图形指令(在本例中来自WPF)转换为打印机理解的指令,即所谓的PDL(通常是PCL或PostScript)。通常,PDL仅支持图形功能的子集,因此复杂的指令会导致巨大的PDL作业。透明扁平化是臭名昭着的。

答案 2 :(得分:0)

我试图在我自己的开发机器上复制你的问题,这是一台Windows 7(64位)PC。凭借几乎无关紧要的1页FixedDocument,印刷似乎几乎是即时的(远低于1秒)。打印发生在标准企业网络打印机以及本地PDF编写器(DoPDF)上,两者都表现良好。你身边似乎有些不同,我认为你过早地认为这是一个WPF问题。

为了缩小您的问题范围,我会考虑/尝试以下方法:

  • 检查哪条代码行运行时间最长。这可以通过插入如下行来在几秒钟内完成:int point1 = Environment.TickCount;相互减去后续点将为您提供点之间经过的时间(以毫秒为单位)。或者查看Stopwatch类。这些信息应该缩小问题的范围。
  • 将WPF中的打印性能与其他应用程序的性能进行比较。可以更快地打印类似复杂的MS Word文档吗?
  • 检查打印机上“通过电线”传输的数据。发送到打印机的数据可能比您预期的要大得多,例如,如果它包含未在源头缩小的图像。

一般情况下,如果您提供了有关您的具体情况的更多信息,肯定会有所帮助,例如:你在网络或USB打印机上打印?打印文件的大小等等。

答案 3 :(得分:0)

我想到的第一件事是查看Windows 7下的打印机驱动程序是否较慢。 然后我会责怪WPF。 尝试使用其他打印机或打印机驱动程序。

相关问题