2011-09-08 135 views
42

創建PDF可能重複:
PDF Generation Library for Java與Java

我工作的發票項目爲當地的會計公司。 什麼是使用Java創建PDF文件的好方法?任何好的圖書館? 我完全不熟悉PDF導出(任何語言)。

+0

[HTML to PDF轉換器列表](http://stackoverflow.com/questions/3178448/list-of-html-to-pdf-converters)的可能的重複,在[將HTML文件轉換爲PDF ](http://stackoverflow.com/questions/633780/converting-html-files-to-pdf)。 – trashgod

回答

65

我喜歡我的輸出數據轉換成XML(使用CastorXStreamJAXB),然後使用XSLT樣式表到XSL-FO並呈現與Apache FOP成PDF轉換它。到目前爲止,已經完成了10頁的報告和400頁的手冊。我發現這比使用iText代碼生成PDF更靈活和可塑。

+0

將400頁手冊轉換爲PDF有多快?我已經使用iText,但對於我們的一些大型文檔來說太慢了。 –

+0

對不起,我在2005 - 2007年做過這件事,但是IIRC對於一份簡單的10頁報告(帶有緩存樣式表)以及幾十秒針對更復雜的400頁報告而言是次要的。如果需要使用不同的數據生成相同/相似的報表,請緩存已解析的XSL樣式表 - 這會大大提升。 –

+0

我也可以推薦Velocity輸出數據到xml。 –

29

以下是使用Java創建PDF一些庫:

  1. iText
  2. Apache PDFBox
  3. BFO

我已經使用iText的用於genarating PDF的疼痛在一點點過去。

或者您可以嘗試使用FOP:FOP是用Java編寫的XSL格式化程序。它與XSLT轉換引擎一起使用,將XML文檔格式化爲PDF。

+14

在iText網站上,我讀到他們的AGPL許可要求您提供「包括您自己的產品在內的所有源代碼的分發,包括如果它是基於Web的應用程序」等等。似乎對任何商業項目都是完全不能接受的。 – mvmn

+0

@mvmn:您可以購買商業授權。 – Thilo

+0

或者你可以使用iText 1。3這是GNU Affero通用公共許可證v3 –

13

另一種選擇是JasperReports:JasperReports Library。它使用iText本身,而不僅僅是你要求的PDF庫,但如果它符合你的需求,我會爲它而努力。

簡而言之,它允許您設計可在運行時填充的報表。如果您使用custom datasource,則可以將JasperReports輕鬆集成到現有系統中。它可以爲您節省整個佈局問題,例如當發票跨越更多的網站,每一方都應該有一個頁腳,等等。