2009-09-08 115 views
1

我有一个使用iTextSharp在内存中创建并包含在MemoryStream中的PDF。我现在需要将该MemoryStream PDF翻译成打印机可以理解的内容。如何将MemoryStream中的PDF发送到.Net中的打印机?

我已经使用报表服务器在过去呈现页面的打印机格式,但我不能用于这个项目。

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

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

任何好的提示?

在此先感谢

瑞安

回答

1

备用和更容易的方式做会节省您的PDF到临时文件,并给下面的命令的Process.Start在此提到,将采取直接的PDF打印Adobe Reader Print Throough Command Line

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

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

+0

这听起来像一个简单的选择! – 2009-09-08 09:47:34

+0

我认为窗口保持打开状态存在问题,并且最新版本没有通过cmd行提供打印支持。我会检查,谢谢。 – 2009-09-08 10:06:20

+0

Adob​​e有一个API,但是很简单,实际上Adobe有一个activex控件,您可以在.NET WinForms中轻松使用它,我认为这可以在没有任何额外运输的情况下使用,您将不得不进行调查,其记录在这里http ://www.adobe.com/devnet/acrobat/pdfs/Acrobat_SDK_developer_faq.pdf – 2009-09-08 10:22:53

2

您将需要一个RIP类似ghostscript解释PDF。我可以给你C#wrapper封装dll调用直接打印到打印机,但有与GhostScript相关的重新分配许可证。

我已经使用leadTools Raster Imaging Pro for .Net来解释PDF,但您需要检查其打印功能。这是一个昂贵的选项,并不是免费的(这实际上是在内部使用GhostScript,但是在LeadTools dll中非常流行,这个库运行良好并且获得许可。可以用吗?你可以调查这一点。

HTH

+0

C#包装听起来很方便,我会很感激。 谢谢 – 2009-09-08 09:17:27

+0

只需要给我发一封电子邮件,我的个人资料页面上的地址。 – 2009-09-08 09:46:40

相关问题