Java操作PDF檔案之IText

大雄45發表於2022-10-06
導讀 iText是著名的開放專案,是用於生成PDF文件的一個java類庫。透過iText不僅可以生成PDF或rtf的文件,而且可以將XML、Html檔案轉化為PDF檔案。 本文從 iText 最基本的用法,分別從表格,圖片,中文來介紹 iText,希望能夠幫助到你。
maven 依賴

使用 iText 的時候需要用 maven 依賴如下:

<dependency> 
    <groupId>com.itextpdf</groupId> 
    <artifactId>itext7-core</artifactId> 
    <version>7.2.0</version> 
    <type>pom</type> 
</dependency>
簡單例項

建立 PDF 需要 4 個步驟:

建立 一個 PdfWriter,用於定義 pdf 的路徑地址
建立一個 pdf 文件,Document,與 PdfWriter 關聯
向文件中新增內容

關閉文件

下面從 hello world 開始。

import com.itextpdf.kernel.pdf.PdfDocument; 
import com.itextpdf.kernel.pdf.PdfWriter; 
import com.itextpdf.layout.Document; 
import com.itextpdf.layout.element.Paragraph; 
 
public class PDFDemo { 
 
    public static void main(String[] args) { 
        try{ 
            PdfWriter pdfWriter = new PdfWriter("./demo.pdf"); 
            PdfDocument pdfDocument = new PdfDocument(pdfWriter); 
            Document document = new Document(pdfDocument); 
            document.add(new Paragraph("Hello World")); 
            document.close(); 
        }catch(Exception e){ 
            e.printStackTrace(); 
        } 
    } 
}

示例結果:
Java操作PDF檔案之ITextJava操作PDF檔案之IText

中文

iText 不支援預設是不支援中文字型的,所以需要定義 PdfFont 中文字型樣式。使用 PdfFontFactory 的 createFont 建立一箇中文字型,並將中文字型設定到 document 中。

public static void main(String[] args) { 
    try{ 
        PdfWriter pdfWriter = new PdfWriter("./demo1.pdf"); 
        PdfDocument pdfDocument = new PdfDocument(pdfWriter); 
        //字型檔案可以使用 windows 系統中的 
        PdfFont font = PdfFontFactory.createFont("E:\\pdfProject\\src\\main\\java\\simhei.ttf"); 
        Document document = new Document(pdfDocument).setFont(font); 
        document.add(new Paragraph("Hello World!你好,itext")); 
        document.close(); 
    }catch(Exception e){ 
        e.printStackTrace(); 
    } 
}

示例結果:
Java操作PDF檔案之ITextJava操作PDF檔案之IText

表格

在專案中經常需要 PDF 檔案中列印表格,這時就可以使用 Table 物件,建立一個個單元格並將表格內容寫入單元格中。

public static void main(String[] args) { 
    try{ 
        PdfWriter pdfWriter = new PdfWriter("./demo2.pdf"); 
        PdfDocument pdfDocument = new PdfDocument(pdfWriter); 
        PdfFont font = PdfFontFactory.createFont("E:\\pdfProject\\src\\main\\java\\simhei.ttf"); 
        Document document = new Document(pdfDocument).setFont(font); 
        Table table = new Table(4); 
        table.setWidth(500); 
        table.addHeaderCell("header 1").addHeaderCell("header 2").addHeaderCell("header 3").addHeaderCell("header 4"); 
        for(int i = 0; i < 16; i++) { 
            table.addCell("cell " + i); 
        } 
        document.add(table); 
 
        document.close(); 
    }catch(Exception e){ 
        e.printStackTrace(); 
    } 
}

示例結果:
Java操作PDF檔案之ITextJava操作PDF檔案之IText

圖片

圖片的設定也很簡單,建立 Image 物件填充到 document 中就可以了。

public static void main(String[] args) { 
    try{ 
        PdfWriter pdfWriter = new PdfWriter("./demo3.pdf"); 
        PdfDocument pdfDocument = new PdfDocument(pdfWriter); 
        PdfFont font = PdfFontFactory.createFont("E:\\pdfProject\\src\\main\\java\\simhei.ttf"); 
        Document document = new Document(pdfDocument).setFont(font); 
        Image img = new Image(ImageDataFactory.create("E:\\pdfProject\\src\\main\\java\\img.png")); 
        document.add(img.setAutoScale(true)); 
 
        document.close(); 
    }catch(Exception e){ 
        e.printStackTrace(); 
    } 
}

示例結果:
Java操作PDF檔案之ITextJava操作PDF檔案之IText

總結

本文從 iText 最基本的用法,分別介紹從表格,圖片,中文來介紹 iText,希望能夠幫助到你。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2848732/,如需轉載,請註明出處,否則將追究法律責任。

相關文章