2009-03-04 88 views
2

我目前有一個「PrintingWebService」,我從AJAX頁面調用,需要使用PDF Sharp和PDFSharp的GDI +模式構建高度自定義的PDF打印輸出所需的所有信息,該模式需要DrawString和其他命令基本上像GDI +一樣工作,只有它們被繪製到PDF中。PdfSharp,GDI +和HTML打印

然後,我將PDF文件保存到網絡服務器上的一個位置,並從Web服務返回文件名,AJAX頁面打開一個帶有pdf文件的新窗口。

到目前爲止,它運行良好,但是,我的AJAX頁面有一部分是我想打印的,我還沒有拿出解決方案。我有一串TinyMCE編輯器的HTML內容,我想在PDF頁面的底部顯示。

我正在尋找某種工具可以用於此目的。甚至可以打印到GDI +的某些開源,我可以通過獲取源代碼並將其翻譯爲使用PdfSharp的GDI +(類名稱類似於XGraphics,每個類在GDI +名稱前具有X)來使用。

如果我不得不限制TinyMCE可以生成HTML並編寫自己的渲染器,但這將是一個很大的挑戰,所以我正在尋找其他解決方案。

我已經遠離打印機友好的頁面方式,因爲我想用我現有的代碼構建一個與現有WinForms打印輸出幾乎相同的頁面。使用PdfSharp,我能夠轉換除文本區域內的所有代碼(在WinForms版本中使用RichTextBox和RTF)。

回答

2

託尼,

我個人使用WebSupergoo的ABCPdf庫取得很大的成功。您實際上可以直接將HTML呈現給PDF,並且在準確性方面做得相當好。

另一個免費的軟件,可以讓你將HTML編寫成PDF的靈活性,我以前用過的很成功的是iTextSharp。

否則,我認爲你必須編寫一些東西來呈現HTML到GDI。

無論採用哪種方式,您都可以考慮使用您映射到的HttpHandler來使用web.config生成PDF文件。這將允許您將PDF渲染到字節流,然後將其直接轉儲給用戶(而不必將每個PDF收據保存到Web服務器)。它還將允許您在返回收據的頁面中使用.pdf擴展名(PurchaseReceipt.pdf可映射到HttpHandler)......使其更易於跨瀏覽器使用。如果您從ASPX頁面開始投擲PDF字節流,則較舊版本的Adobe /瀏覽器將無法正確顯示。

希望這會有所幫助。

+0

謝謝,我會檢查出來的。 就舊的瀏覽器支持而言,這是一個內部項目,所以我對支持的瀏覽器和版本有更多的奢侈品。但它需要記住。 – 2009-03-04 17:02:37