2013-01-04 173 views
4

我有一個基於Java/Java EE的應用程序,其中我需要爲將提供給用戶的各種服務創建PDF證書。我正在尋找一種方法來創建PDF(現在不需要數字證書)。使用java創建複雜pdf

這樣做最簡單便捷的方法是什麼?我一直在使用iText的嘗試

  1. XSL轉換爲PDF
  2. HTML轉換爲PDF。
  3. 原油Java的方式(使用PDFWriter,PdfPCell等)

什麼是最好的出路,這些或者是有哪些是比較容易和方便的任何其他方式?

+0

對於HTML到PDF,你應該嘗試飛碟:http://code.google.com/p/flying-saucer/ – user1411778

+1

的*最簡單,最方便方式*取決於你想成爲多麼靈活。如果應該允許那些「證書」包含任何PDF格式的文件,那麼您將不得不使用粗糙的Java方式,或者使用iText,這可以通過您引用的類名稱或其他體面的PDF庫來實現。如果「證書」只是簡單的文本而沒有小聲和哨聲,那麼腳本解決方案可能更合適。 XSL或JasperReport都有其優點。在我看來,HTML-> PDF只有在您無法幫助獲取HTMLn格式的證書模板時纔是明智的。 – mkl

回答

6

當你談論證書,我認爲認準證書的每一個接收相同的,除了標準片:

  • 接收
  • 的課程,其次是接收器的名稱
  • 日期

如果是這樣的話,我會用任何工具,它允許你創建一個奇特的證書(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節)。

+0

這是一個不錯的選擇。非常感謝! – Ankit

+0

你建議的選項很好,但我無法找到創建PDF的開源方式:(我試圖轉換html - > PDF,但是有一些問題。PDF頁面中的圖像沒有正確顯示。圖像尺寸在PDF中更改,有什麼方法可以糾正它? – Ankit

+0

爲什麼使用HTML來PDF?爲什麼不在Open Office/Libre Office中打開HTML並按照您想要創建PDF的方式進行調整? HTML不適合作爲創建設計的格式。 –

0

使用iText pdf庫創建PDF的文件從您的api文件生成pdf文件將很容易。這裏是鏈接

http://itextpdf.com/

文本®是,它允許你創建和操作PDF文檔庫。它使開發人員能夠使用動態PDF文檔生成和/或操作來增強Web和其他應用程序。

開發人員可以使用的iText到:

即成PDF的瀏覽器

生成XML文件或數據庫

使用PDF的諸多互動功能動態文檔

添加書籤,頁碼,水印等

拆分,連接和操作PDF頁面

自動化填寫PDF的形成

添加數字簽名到PDF文件

+0

我認爲這是@Ankit稱爲*粗糙的java方式(使用PDFWriter,PdfPCell等)*。 ;) – mkl

1

我推薦第一種方法:XSL到pdf轉換,這是最強大的。我有經驗可以使用Apache FOP優雅地製作大量的PDF報告(每篇都有數千頁),我認爲它很好,很容易(但它需要一些關於xsl-FO的知識)。

+0

我也發現XSL轉換爲pdf格式,但我發現創建XSL是一項繁瑣的任務,有沒有更簡單的方法來創建xsl或者它只能手動創建? – Ankit

+0

XSL有點麻煩,但一旦完成,您可以重複使用它。此外,您可以選擇一些優秀的編輯器(例如XMLSpy)來編輯XSL/XML文件,這可能會消除大量的手動輸入。 –

0

您提到的PDF可能很複雜。如果這涉及可變性或佈局,則提供合理複雜的基於模板的佈局和控件的一個選項是Docmosis。您提供Docmosis作​​爲模板的文檔或odt文件,因此它們非常容易更改,Docmosis通過郵件合併來創建pdf或其他格式。請不要我爲創建Docmosis的公司工作。

希望有所幫助。

0

即使這是老問題,我認爲它應該是答案。

創建非常複雜的pdf,如證書,報告或付款單等。 您絕對可以使用動態報告庫。這個庫依賴於賈斯珀報告(這也是非常流行的舊庫)。動態報告將爲您提供使用Java代碼設計您的文檔,以便您可以根據需要輕鬆操作或進行更改。

在他們的網站上有很多可用的例子,並且很容易從這些例子中學習。

下面鏈接吧:

http://www.dynamicreports.org/