2009-09-08 78 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

相關問題