我有一個基於Java/Java EE的應用程序,其中我需要爲將提供給用戶的各種服務創建PDF證書。我正在尋找一種方法來創建PDF(現在不需要數字證書)。使用java創建複雜pdf
這樣做最簡單便捷的方法是什麼?我一直在使用iText的嘗試
- XSL轉換爲PDF
- HTML轉換爲PDF。
- 原油Java的方式(使用PDFWriter,PdfPCell等)
什麼是最好的出路,這些或者是有哪些是比較容易和方便的任何其他方式?
我有一個基於Java/Java EE的應用程序,其中我需要爲將提供給用戶的各種服務創建PDF證書。我正在尋找一種方法來創建PDF(現在不需要數字證書)。使用java創建複雜pdf
這樣做最簡單便捷的方法是什麼?我一直在使用iText的嘗試
什麼是最好的出路,這些或者是有哪些是比較容易和方便的任何其他方式?
當你談論證書,我認爲認準證書的每一個接收相同的,除了標準片:
如果是這樣的話,我會用任何工具,它允許你創建一個奇特的證書(Acrobat中,開放式辦公,Adobe InDesign中,...),並創建一個ST atic形式(有時稱爲AcroForm)包含三個字段:名稱,課程,日期。
我會再使用iText的填寫這樣的字段:
PdfReader reader = new PdfReader(pathToCertificateTemplate);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(pathToCertificate));
AcroFields form = stamper.getAcroFields();
form.setField("name", name);
form.setField("course", course);
form.setField("date", date);
stamper.setFormFlattening(true);
stamper.close();
reader.close();
從代碼中創建此類證書是「辛苦」;從XML創建這樣的證書是「一個痛苦」(因爲XML不太適合定義佈局),使用iText的XML Worker可以從(HTML + CSS)創建證書,但所有這些解決方案都有缺點確保正確定位每件物品,確保每件物品都放在同一頁面上是很困難的工作,等等......
維護具有固定字段的模板要容易得多。這樣,您只需編寫一次代碼。如果出於某種原因想要將字段移至其他地方,則只需更改模板,不必擔心在代碼,XML,HTML或CSS中發生混亂。
有關更多信息,請參閱http://www.manning.com/lowagie2/samplechapter6.pdf(第6.3.5節)。
使用iText pdf庫創建PDF的文件從您的api文件生成pdf文件將很容易。這裏是鏈接
文本®是,它允許你創建和操作PDF文檔庫。它使開發人員能夠使用動態PDF文檔生成和/或操作來增強Web和其他應用程序。
開發人員可以使用的iText到:
即成PDF的瀏覽器
生成XML文件或數據庫
使用PDF的諸多互動功能動態文檔
添加書籤,頁碼,水印等
拆分,連接和操作PDF頁面
自動化填寫PDF的形成
添加數字簽名到PDF文件
我認爲這是@Ankit稱爲*粗糙的java方式(使用PDFWriter,PdfPCell等)*。 ;) – mkl
我推薦第一種方法:XSL到pdf轉換,這是最強大的。我有經驗可以使用Apache FOP優雅地製作大量的PDF報告(每篇都有數千頁),我認爲它很好,很容易(但它需要一些關於xsl-FO的知識)。
我也發現XSL轉換爲pdf格式,但我發現創建XSL是一項繁瑣的任務,有沒有更簡單的方法來創建xsl或者它只能手動創建? – Ankit
XSL有點麻煩,但一旦完成,您可以重複使用它。此外,您可以選擇一些優秀的編輯器(例如XMLSpy)來編輯XSL/XML文件,這可能會消除大量的手動輸入。 –
您提到的PDF可能很複雜。如果這涉及可變性或佈局,則提供合理複雜的基於模板的佈局和控件的一個選項是Docmosis。您提供Docmosis作爲模板的文檔或odt文件,因此它們非常容易更改,Docmosis通過郵件合併來創建pdf或其他格式。請不要我爲創建Docmosis的公司工作。
希望有所幫助。
即使這是老問題,我認爲它應該是答案。
創建非常複雜的pdf,如證書,報告或付款單等。 您絕對可以使用動態報告庫。這個庫依賴於賈斯珀報告(這也是非常流行的舊庫)。動態報告將爲您提供使用Java代碼設計您的文檔,以便您可以根據需要輕鬆操作或進行更改。
在他們的網站上有很多可用的例子,並且很容易從這些例子中學習。
下面鏈接吧:
對於HTML到PDF,你應該嘗試飛碟:http://code.google.com/p/flying-saucer/ – user1411778
的*最簡單,最方便方式*取決於你想成爲多麼靈活。如果應該允許那些「證書」包含任何PDF格式的文件,那麼您將不得不使用粗糙的Java方式,或者使用iText,這可以通過您引用的類名稱或其他體面的PDF庫來實現。如果「證書」只是簡單的文本而沒有小聲和哨聲,那麼腳本解決方案可能更合適。 XSL或JasperReport都有其優點。在我看來,HTML-> PDF只有在您無法幫助獲取HTMLn格式的證書模板時纔是明智的。 – mkl