1. 程式人生 > 其它 >itext 生成pdf ----hello world

itext 生成pdf ----hello world

 

iTextJava中用於建立和操作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公共許可證

LGPL下分發的。iText同時由iText軟體公司通過一個專有許可證進行分發。iText®是1T3XT BVBA的註冊商標

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

官方文件連結:https://itextpdf.com/en/resources/api-documentation/itext-7-java