2

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

我过去曾使用 Report Server 将页面呈现为打印机格式,但我无法将其用于此项目。

有没有一种原生的.Net方式来做到这一点?例如,如果 GhostScript 是一个 .Net 程序集,它就可以了,但我不想将任何非 .Net 的东西与我的安装程序捆绑在一起。

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

有什么好的提示吗?

提前致谢

瑞安

4

2 回答 2

2

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

我使用了 LeadTools Raster Imaging Pro for .Net 来解释 PDF,不过你需要检查它的打印能力。这是一个昂贵的选项,并且不是免版税的(这实际上在内部使用 GhostScript,但非常包含在 LeadTools dll 中。这个库运行良好并且绕过了许可。

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

高温高压

于 2009-09-08T09:15:40.500 回答
1

另一种更简单的方法是将您的 pdf 保存到临时文件中,并在 Process.Start 中给出以下命令,这将使 pdf 直接打印,如本Adob​​e Reader Print Throough Command Line中所述

Process.Start("AcroRd32.exe /t \"C:\test.pdf\"");

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

于 2009-09-08T09:28:35.830 回答