代码之家  ›  专栏  ›  技术社区  ›  Ryan O'Neill

如何将memoryStream中的PDF发送到.NET中的打印机?

  •  1
  • Ryan O'Neill  · 技术社区  · 15 年前

    我有一个使用ITextSharp在内存中创建的PDF,它包含在一个memoryStream中。我现在需要将memorystream pdf翻译成打印机能够理解的内容。

    我以前使用过ReportServer将页面呈现为打印机格式,但我不能在这个项目中使用它。

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

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

    有什么好的暗示吗?

    提前谢谢

    赖安

    2 回复  |  直到 15 年前
        1
  •  1
  •   Akash Kava    15 年前

    另一种更简单的方法是将您的PDF保存到临时文件中,并在进程中发出以下命令。 Adobe Reader Print Throough Command Line

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

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

        2
  •  2
  •   Mark Redman    15 年前

    您需要一个类似于翻录的鬼脚本来解释PDF。我可以为您提供C wrapper tha wrapps dll调用以直接打印到打印机,但有与ghostscript关联的重新分发许可证。

    我已经使用leadtools光栅成像Pro for.NET来解释PDF,但是您需要检查它的打印功能。这是一个昂贵的选项,并且不是免版税的(这实际上在内部使用了ghostscript,但是被封装在leadtools DLL中)。这个库工作得很好,可以绕过许可证。

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

    高温高压