簡體   English   中英

在 Java web 應用程序中生成 PDF

[英]Generating PDFs in Java web application

I have a requirement to generate a (dynamic) PDF after a user has made a payment and attach it to an email and send it in my Java web application.

我正在考慮使用 iText,但我真的不喜歡如何將所有格式和布局與 PDF 的內容混合在一起,如以下鏈接中的示例: Z80791B3AE7002CB88C246876D9FAA8-toZ: /java/ItextExample

我不喜歡將它混合在一起的原因是因為我們的 UI 人員不會舒服地觸摸這個 Java 代碼。

我還有什么其他選擇? 我真的不想用所需的數據生成 XML 文件,然后必須對其進行轉換,所以我認為 XSL-FO 可能會出局。

我已經在幾個項目中使用了 Jasper Reports,它運行得非常好,編譯報告時也非常快。 創建報告的 UI 還不錯,盡管您需要對數據 model 有點熟悉。 您可以傳入任何您想要的數據源,包括 XML 文件或填充了您的數據的簡單 hashmap:

http://jasperforge.org/website/jasperreportswebsite/trunk/documentation.html?header=project&target=jasperreports

偽代碼

File myJasperFile  // reference to compiled Jasper file
JRExporter exp = new JRPdfExporter()
ByteArrayOutputSream b;
JasperPrint p = JasperFillManager.fillReport(...)
exp.setParameter(JRExporterParameter.OUTPUT_STREAM, b)
exp.setParameter(JRExporterParameter.JASPER_PRINT, p)
exp.exportReport() // b now contains the PDF binary

有許多 HTML->PDF 選項浮動(包括 iText)。 您可以從您的 UI 人員創建的模板生成 HTML,然后將其轉換為 PDF。 瑣碎的。

如果您的 HTML 變得花哨和腳本化,那么 iText(和大多數其他轉換器)將無法正確處理它。 對於高級的東西,你需要 WKHTML2PDF,這是一個基於 webkit 的應用程序,它寫入 PDF 而不是屏幕。 它很光滑(有點偏重)。 iText 會更有效率。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM