OpenPDF介紹

OpenPDF是一個用Java編寫的,免費且開源的PDF庫,它可以用於創建、編輯、填充和處理PDF文檔。它通過提供一系列的API,使開發者能夠以編程方式創建PDF文件,包括添加文本、圖像、表格、圖表、附件等,還可以對PDF文檔進行深層次的修改和處理。本文將從多個方面闡述OpenPDF的特點和使用方法,以便初學者能夠快速了解和使用。

一、安裝OpenPDF

OpenPDF可以從Maven倉庫獲取。在你的pom.xml中添加以下內容:

<dependency>
    <groupId>com.github.librepdf</groupId>
    <artifactId>openpdf</artifactId>
    <version>1.3.31</version>
</dependency>

如果你不使用Maven,在此處下載OpenPDF的JAR包,然後將其添加到你的類路徑中即可。

二、創建PDF文檔

以下是一個簡單的示例,展示了如何使用OpenPDF創建一個PDF文檔:

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
public class CreatePdfExample {
 
    public static void main(String[] args) {
        Document document = new Document();
        try {
            PdfWriter.getInstance(document,
                    new FileOutputStream("HelloWorld.pdf"));
            document.open();
            document.add(new Paragraph("Hello World!"));
            document.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
 
}

在該示例中,我們使用Document類創建一個PDF文檔,然後使用PdfWriter類將文檔寫入文件。最後,我們添加了一個段落,並關閉文檔。當運行該示例時,將在本地磁盤上創建一個名為“HelloWorld.pdf”的PDF文檔。

三、添加字體及樣式

以下示例展示了如何使用默認字體以及自定義字體創建一個文檔,並添加文本和樣式:

import com.lowagie.text.*;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class AddFontExample {
 
    public static void main(String[] args) {
 
        Document document = new Document();
 
        try {
 
            PdfWriter.getInstance(document,
                    new FileOutputStream("AddFont.pdf"));
 
            document.open();
 
            // 使用默認字體
            Font font1 = new Font();
            font1.setStyle(Font.BOLD);
            font1.setSize(22);
            Paragraph paragraph1 = new Paragraph("This is a paragraph using default font.", font1);
            document.add(paragraph1);
 
            // 使用自定義字體
            String fontPath = "/Library/Fonts/Arial.ttf";
            BaseFont bf = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
            Font font2 = new Font(bf, 16);
            Paragraph paragraph2 = new Paragraph("This is a paragraph using custom font.", font2);
            document.add(paragraph2);
 
            document.close();
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在該示例中,我們首先創建了一個默認Font對象font1,然後使用其屬性設置樣式和大小。接下來,我們將該Font對象作為參數傳遞給Paragraph對象,以便在PDF文檔中添加該段文字。接着,我們使用自定義字體創建了一個Font對象font2,並附加到另一個Paragraph對象上。

四、添加表格

OpenPDF提供了添加表格的方法,以下示例演示了如何創建一個簡單的表格:

import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class AddTableExample {
 
    public static void main(String[] args) {
 
        Document document = new Document();
 
        try {
 
            PdfWriter.getInstance(document,
                    new FileOutputStream("AddTable.pdf"));
 
            document.open();
 
            PdfPTable table = new PdfPTable(3);
 
            PdfPCell cell1 = new PdfPCell(new Paragraph("Cell 1"));
            PdfPCell cell2 = new PdfPCell(new Paragraph("Cell 2"));
            PdfPCell cell3 = new PdfPCell(new Paragraph("Cell 3"));
 
            table.addCell(cell1);
            table.addCell(cell2);
            table.addCell(cell3);
 
            document.add(table);
 
            document.close();
 
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在此示例中,我們創建了一個包含3個列的PdfPTable對象,然後創建了3個PdfPCell對象並向表格中添加。最後,使用document.add()方法將表格添加到PDF文檔中。

五、添加圖像

以下示例演示了如何在PDF文檔中添加圖像:

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.Image;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class AddImageExample {
 
    public static void main(String[] args) {
 
        Document document = new Document();
 
        try {
 
            PdfWriter.getInstance(document,
                    new FileOutputStream("AddImage.pdf"));
 
            document.open();
 
            // 添加圖像
            String imagePath = "/Users/username/image.png";
            Image image = Image.getInstance(imagePath);
            document.add(image);
 
            document.close();
 
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我們創建了一個Image對象,並將其插入到PDF文檔中。此外,我們還可以使用setAbsolutePosition()方法設置圖像在文檔中的位置,或使用scaleAbsolute()方法設置圖像的大小。

六、PDF文檔加密

我們可以使用OpenPDF創建受密碼保護的PDF文檔,以下是一個示例:

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.pdf.PdfEncryption;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
public class EncryptPdfExample {
 
    public static void main(String[] args) {
 
        Document document = new Document();
 
        try {
 
            PdfWriter writer = PdfWriter.getInstance(document,
                    new FileOutputStream("ProtectedPdf.pdf"));
 
            writer.setEncryption("password".getBytes(),
                    "owner".getBytes(),
                    PdfWriter.ALLOW_PRINTING,
                    PdfWriter.ENCRYPTION_AES_128);
 
            document.open();
 
            // 添加內容
            document.add(new Paragraph("This is a protected PDF document."));
 
            document.close();
 
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
 
    }
}

在上面的示例中,我們使用了setEncryption()方法來加密PDF文檔。方法中的“password”和“owner”是密碼和擁有者。最後一個參數指定了加密級別為AES-128。該示例將“ProtectedPdf.pdf”創建在本地磁盤上。

總結

本文介紹了OpenPDF的基礎知識,包括如何安裝和使用OpenPDF,以及如何創建PDF文檔、添加字體及樣式、添加表格、添加圖像和PDF文檔加密等操作。通過本文的介紹,讀者可以了解OpenPDF的應用場景和特點,並能夠快速上手。如果您對OpenPDF有任何疑問,請在OpenPDF的官方網站上瀏覽文檔或論壇,並尋求幫助。

原創文章,作者:LHIW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/131526.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LHIW的頭像LHIW
上一篇 2024-10-03 23:46
下一篇 2024-10-03 23:46

發表回復

登錄後才能評論