如何将MemoryStream中的PDF发送到.Net中的打印机?

时间:2009-09-08 09:05:28

标签: .net printing memorystream

我在内存中使用iTextSharp创建了一个PDF并包含在MemoryStream中。我现在需要将MemoryStream PDF翻译成打印机能理解的内容。

我过去曾使用过报表服务器将页面呈现为打印机格式,但我无法将其用于此项目。

有这种本地.Net方式吗?例如,如果它是一个.Net程序集,GhostScript就可以了,但我不想将任何非.Net内容与我的安装程序捆绑在一起。

.Net中的PrintDocument类非常适合将内容发送到打印机,但我仍然需要在页面级别将其从PDF流转换为GDI。

有什么好的提示吗?

提前致谢

赖安

2 个答案:

答案 0 :(得分:2)

您需要像GhostScript这样的RIP来解释PDF。我可以给你C#wrapper tha包含dll调用直接打印到打印机,但是有与GhostScript相关的再分发许可证。

我使用.Net的leadTools光栅成像专业版来解释PDF,你需要检查它的打印功能。这是一个昂贵的选择,并且不是免版税的(这实际上是在内部使用GhostScript,但它非常包含在LeadTools dll中。这个库运行良好并且可以获得许可。

不确定Acrobat Reader是否有可以使用的API?你可以调查一下。

HTH

答案 1 :(得分:1)

备用且更简单的方法是将pdf保存到临时文件中,并在Process.Start中提供以下命令,将pdf直接打印到此Adobe Reader Print Throough Command Line

中所述的打印
Process.Start("AcroRd32.exe /t \"C:\test.pdf\"");

我认为这是最好的方式,因为Adobe肯定会以正确的方式打印,而不是依赖于任何其他工具,它们很好,但它们不是100%正确。