博客 / 詳情

返回

Java處理Base64 PDF:解碼、編輯與重新編碼

在分佈式服務、Web API 或無服務器函數中,PDF 文件常常以 Base64 字符串 的形式傳輸。這種方式避免了直接的文件操作,更適合跨網絡調用。開發者若希望對接收到的 PDF 進行處理(例如加水印、加批註、簽章等),就需要掌握 Base64 與 PDF 的互轉 以及 文檔編輯 方法。

本文將介紹如何使用 Java 和 Free Spire.PDF for Java 來完成以下操作:

  • 將 Base64 字符串解碼為 PDF;
  • 編輯 PDF(示例:在每頁添加文本水印“Processed”);
  • 將編輯後的 PDF 再次編碼為 Base64 字符串。

準備工作

請先在項目中引入PDF操作庫,可下載Free Spire.PDF for Java導入項目,或通過 Maven:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.pdf.free</artifactId>
    <version>9.13.0</version>
</dependency>

Step 1: 解碼Base64並加載PDF

首先,接收來自 API 或外部系統的 Base64 編碼字符串,解碼為字節數組,然後通過 PdfDocument.loadFromBytes() 方法加載為 PDF 文檔對象。

代碼示例:

import com.spire.pdf.*;
import java.util.Base64;

String base64Pdf = "..."; // 輸入的Base64字符串
byte[] pdfBytes = Base64.getDecoder().decode(base64Pdf);

// 加載 PDF 文檔
PdfDocument pdf = new PdfDocument();
pdf.loadFromBytes(pdfBytes);

Step 2: 編輯PDF文檔

Spire.PDF 提供了豐富的繪製 API,可以在 PDF 頁面上添加文字、圖片或圖形,以及操作頁面、創建表單、加密解密PDF等。下面的示例演示如何在每一頁添加藍色加粗文本“Modified”,作為處理標記。

操作説明:

  1. 遍歷文檔的每一頁;
  2. 創建字體與畫刷對象;
  3. 使用 drawString() 方法繪製文字。

代碼示例:

import com.spire.pdf.graphics.*;
import java.awt.*;

for (PdfPageBase page : (Iterable<PdfPageBase>) pdf.getPages()) {
    PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", Font.BOLD, 36));
    PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
    page.getCanvas().drawString("Processed", font, brush, 100, 100);
}

Step 3: 保存PDF並重新編碼為Base64

完成編輯後,將 PDF 保存到內存流中,再次轉為 Base64 字符串,以便傳輸或存儲。

代碼示例:

import java.io.*;

ByteArrayOutputStream output = new ByteArrayOutputStream();
pdf.saveToStream(output);
pdf.close();

// 轉回 Base64 字符串
String resultBase64 = Base64.getEncoder().encodeToString(output.toByteArray());
System.out.println(resultBase64);

完整代碼示例

import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.io.*;
import java.util.Base64;

public class EditBase64Pdf {
    public static void main(String[] args) throws Exception {
        String base64Pdf = "..."; // 輸入的Base64字符串

        // Step 1: 解碼並加載 PDF
        byte[] pdfBytes = Base64.getDecoder().decode(base64Pdf);
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromBytes(pdfBytes);

        // Step 2: 在每頁添加水印文字
        for (PdfPageBase page : (Iterable<PdfPageBase>) pdf.getPages()) {
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", Font.BOLD, 36));
            PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.BLUE));
            page.getCanvas().drawString("Processed", font, brush, 100, 100);
        }

        // Step 3: 保存並轉回Base64
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        pdf.saveToStream(output);
        pdf.close();

        String resultBase64 = Base64.getEncoder().encodeToString(output.toByteArray());
        System.out.println(resultBase64);
    }
}

編輯後的PDF文檔:

Java編輯Base64格式的PDF文檔

總結

通過本文的示例,我們學習瞭如何在 Java 中結合 Spire.PDF 來處理 Base64 格式的 PDF 文件,主要包括:

  • Base64 與 PDF 的互轉:便於網絡傳輸與無文件系統環境;
  • PDF 編輯操作:可以添加文字水印、圖形、圖片等;
  • 內存流處理:保證操作的高效與靈活,適合嵌入 API 服務或微服務。

這種方式尤其適合於 API 接口返回 PDF雲函數批處理分佈式系統中的文檔標記 場景。

更多教程請參考:Spire.PDF for Java 教程中心

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.