我在内存中使用iTextSharp创建了一个PDF并包含在MemoryStream中。我现在需要将MemoryStream PDF翻译成打印机能理解的内容。
我过去曾使用过报表服务器将页面呈现为打印机格式,但我无法将其用于此项目。
有这种本地.Net方式吗?例如,如果它是一个.Net程序集,GhostScript就可以了,但我不想将任何非.Net内容与我的安装程序捆绑在一起。
.Net中的PrintDocument类非常适合将内容发送到打印机,但我仍然需要在页面级别将其从PDF流转换为GDI。
有什么好的提示吗?
提前致谢
赖安
答案 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%正确。