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

问题描述 投票:0回答:2

我使用 iTextSharp 在内存中创建了一个 PDF,并将其包含在 MemoryStream 中。我现在需要将 MemoryStream PDF 转换为打印机可以理解的内容。

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

是否有本地 .Net 方法可以做到这一点?例如,如果 GhostScript 是 .Net 程序集,那就没问题,但我不想将任何非 .Net 内容与我的安装程序捆绑在一起。

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

有什么好的提示吗?

提前致谢

瑞安

.net printing memorystream
2个回答
2
投票

另一种更简单的方法是将 pdf 保存到临时文件中,并在 Process.Start 中给出以下命令,该命令将直接打印 pdf,如本 [Adobe Reader 通过命令行打印][1] 中所述

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

我想说这是最好的方法,因为 Adobe 肯定会以正确的方式打印它,而不是依赖任何其他工具,它们很好,但不是 100% 正确。 [1]:http://support.adobe.com/devsup/devsup.nsf/docs/52080.htm


2
投票

您将需要像 GhostScript 这样的 RIP 来解释 PDF。我可以为您提供 C# 包装器,它包装 dll 调用以直接打印到打印机,但有与 GhostScript 相关的重新分发许可证。

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

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

HTH

© www.soinside.com 2019 - 2024. All rights reserved.