itext 生成pdf ----hello world
iText是Java中用於建立和操作PDF檔案的開源庫。它是由Bruno Lowagie、Paulo Soares等人編寫的。Ohloh報告稱2001年以來[2],26個不同的貢獻者進行了1萬多次提交,超過100多萬行程式碼。[3]iText具有一個由大型開發團隊維護的完善的、成熟的、活躍度同比持平的程式碼庫。[4]利用COCOMO模型,花了大約250人年的努力後,2000年11月iText專案開始了第一次提交。[5]
5.0.0版(2009年12月7日釋出)後的iText是在Affero通用公共許可證第3版下分發的。之前版本的iText(Java版的至4.2.1版,和C#版的至4.1.6版)是在Mozilla公共許可證
iText已經以iTextSharp的名義移植到.NET Framework下。iTextSharp是用C#編寫的,它有一個獨立於iText的程式碼庫,但與iText的版本同步。
在2013年中,iText(Java)和iTextSharp(.NET)僅在SourceForge就有超過500萬次的下載量。2013年10月,iText在SourceForge上每週約有3000次下載[6],而iTextSharp每週約有4000次下載[7]。
開發者可以用iText來:
- 從XML檔案或資料庫來動態生成PDF文件
- 為瀏覽器生成PDF文件
- 利用PDF的許多互動功能
- 新增書籤、頁碼、水印、條形碼等
- 分割、拼接和處理PDF頁面
- 自動填寫PDF表單
- 給PDF檔案新增數字簽名
通常情況下,在具有下列情況之一的專案中會使用iText:
- 內容不是提前準備好的:它基於使用者輸入或資料庫的實時資訊來計算、處理。
- 內容太多,PDF檔案無法手動生成。
- 在批處理過程中,文件需要在無人值守模式下建立。
- 需要對內容進行定製或個性化。例如,終端使用者的名字需要被印在多個頁面上。
iText是一個非常著名的能夠快速產生PDF檔案的Java類庫。支援文字,表格,圖形的操作,可以方便的跟 Servlet 進行結合
iText的更新變化很大,早期版本在PDF樣式上可能會有瑕疵,所有我使用的最新的5.5.12包,文字包用的5.2.0版本
瞭解了Itext能幹什麼,我們第一步來用itext寫一個Hello world。
1.新增Maven依賴
itext核心包 和xmlworder字型包
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.12</version> </dependency> <dependency> <groupId>com.itextpdf.tool</groupId> <artifactId>xmlworker</artifactId> <version>5.5.12</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
2.建立main方法測試,用itext生成pdf的Hello world
import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.text.*; import com.itextpdf.text.pdf.PdfWriter; /** * PDF工具類 */ public class PdfUtils { public static void main(String[] args) throws DocumentException, IOException { Document document = new Document(); PdfWriter.getInstance(document, new FileOutputStream("D:/iTextDemo/hello_word.pdf")); // 開啟文件 document.open(); // 寫入內容 document.add(new Paragraph("Hello World")); // 寫入結束 document.close(); } }
3.有很多人試過了上面demo,把文字換成中文,哎喲,發現中文沒有寫入成功,下面用一種最簡單的設定中文的方式,IText設定中文的方式很多,因為時間原因,我就只展示最簡單的一種。
import com.itextpdf.text.*; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfWriter; import java.io.FileOutputStream; import java.io.IOException; /** * PDF工具類 */ public class Pdf1Utils { public static void main(String[] args) throws DocumentException, IOException { // 新建文件 Document document = new Document(PageSize.A4); // 如果輸出中文,需要設定中文字型 BaseFont chineseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font font = new Font(chineseFont, 12, Font.NORMAL); PdfWriter.getInstance(document, new FileOutputStream("D:/iTextDemo/hello.pdf")); // 開啟文件 document.open(); // 寫入內容 Paragraph paragraph = new Paragraph("你好,JAVA藍貓。", font); document.add(paragraph); // 關閉文件 document.close(); } }
如果想進一步瞭解學習IText,建議還是看官方文件。
官方文件連結:https://itextpdf.com/en/resources/api-documentation/itext-7-java