如何在 PDF 中替換文字

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Java 讓開發人員能透過 replaceText 方法直接控制現有的 PDF 內容。 無論您需要修正一批生成的報告中的錯字、在範本文件中替換版本號,還是使用客戶專屬資料來客製化合約,此方法皆可接受頁面選取、搜尋字串及替換字串,並自動處理後續步驟。本指南涵蓋單頁替換、多頁定位、所有可用的 PageSelection 選項,以及範本驅動工作流程的實用模式。

快速入門:替換 PDF 中的文字

新增 IronPDF 依賴項、載入或渲染 PDF、呼叫 replaceText,並儲存結果:

```java :title=快速入門 替換文字 //:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/quickstart.java import com.ironsoftware.IronPDF.*; import com.ironsoftware.IronPDF.edit.PageSelection; import java.io.IO/Exception;

public class App { public static void main(String[] args) throws IOException { License.setLicenseKey("IronPDF-MYLICENSE-KEY-1EF01"); PdfDocument pdf = PdfDocument.renderHtmlAsPdf(""); pdf.replaceText(PageSelection.firstPage(), ".NET6", ".NET7"); pdf.saveAs("replaceText.pdf"); } }


<div class="hsg-featured-snippet">
    <h3>簡化工作流程(5 個步驟)</h3>
    <ol>
        <li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">下載 Java 函式庫以替換 PDF 中的文字</a></li>
        <li>載入現有 PDF 檔案,或從 HTML 渲染 PDF</li>
        <li>呼叫 <code>pdf.replaceText(PageSelection, oldText, newText)</code> 以在目標頁面中進行替換</li>
        <li>使用 <code>PageSelection</code> 方法來控制哪些頁面被修改</li>
        <li>儲存並匯出更新後的 PDF 檔案 <code>pdf.saveAs(&quot;output.pdf&quot;)</code></li>
    </ol>
</div>

## 如何在單一頁面中替換文字?

`replaceText` 方法接受三個參數:一個 `PageSelection` 參數(用於指定一個或多個頁面)、要搜尋的具體文字,以及替換字串。 若要針對首頁進行翻譯,請傳入 `PageSelection.firstPage()`。 該頁面中所有搜尋字串的出現位置,皆可透過單一呼叫一次性替換。 若無法在目標頁面中找到該文字,此方法將拋出執行時例外。 下方的螢幕截圖顯示了該例外情況在控制台中的呈現樣貌。

![IronPDF 控制台輸出顯示 Exception_RemoteException 錯誤,因在 replaceText 過程中無法找到目標文字 '.NET7'](/static-assets/ironpdf-java/howto/find-replace-text/cannotfindtext.webp)

### replaceText 接受哪些參數?

方法簽名是 `replaceText(PageSelection pageSelection, String oldText, String newText)`。 預設情況下,比對會區分大小寫:`"net6"` 與 `"NET6"` 會被視為不同的字串。 在呼叫該方法之前,請先確認渲染出的 PDF 檔案中大小寫是否正確。 您可以先[擷取 PDF 的文字內容](https://ironpdf.com/java/examples/extract-image-from-pdf/),以確認確切的文本。IronPDF Java 依賴項已發佈於 [Maven Central](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf),並需要 Java 8 或更高版本。

```java :title=替換首頁上的文字
//:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-single-page.java
import com.ironsoftware.IronPDF.*;
import com.ironsoftware.IronPDF.edit.PageSelection;
import java.io.IO/Exception;

public class App {

    public static void main(String[] args) throws IOException {

        // 設定 IronPdf 授權金鑰(生產環境使用時必備)
        License.setLicenseKey(&quot;IronPDF-MYLICENSE-KEY-1EF01&quot;);

        // 將 HTML 內容渲染為 PDF 文件
        PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");

        // 定義搜尋與替換字串
        String oldText = &quot;.NET6&quot;;
        String newText = &quot;.NET7&quot;;

        // 僅在第一頁替換所有 oldText 的出現位置
        // PageSelection.firstPage() 針對頁碼 0
        pdf.replaceText(PageSelection.firstPage(), oldText, newText);

        // 儲存修改後的 PDF
        pdf.saveAs(&quot;replaceText.pdf&quot;);
    }
}

提示在應用程式啟動時一次性載入授權金鑰,而非在每次個別操作之前載入。 這可避免在同一 JVM 執行階段處理多個文件時,重複產生初始化開銷。

replaceText 方法可自然地整合至 IronPDF 的 HTML 轉 PDF 工作流程中。 請先渲染 HTML 範本,然後套用文字替換來插入動態值。 這能讓您的 HTML 保持簡潔,同時仍能產生個人化的輸出內容。 對於從磁碟載入的文件,請將檔案路徑傳遞給 PdfDocument.fromFile,而非使用 renderHtmlAsPdf

翻譯成果應呈現何種樣貌?


如何在多頁面上替換文字?

若要針對特定頁面(而非僅限首頁),請將以零為起點的頁碼清單傳遞給 PageSelection.pageRange(List<Integer>)。 此方法會將清單中每頁的搜尋文字替換,並保留其他所有頁面的原始內容。 此模式適用於頁面編號固定且頁首或頁尾格式一致的文件,或僅在特定頁面出現版本字串的批次生成報告。

使用頁面清單時,哪些頁面會被修改?

在下面的範例中,系統會從 HTML 建立一份三頁的 PDF 檔案。 此替換內容適用於 02 這兩頁(即第一頁和第三頁)。 頁面 1(第二頁)保留原始文字不變。 頁面索引始終從 0 開始,這與 Java 的零起始陣列慣例一致。

```java :title=在多個特定頁面中替換文字 //:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-multiple-pages.java import com.ironsoftware.IronPDF.*; import com.ironsoftware.IronPDF.edit.PageSelection; import java.io.IO/Exception; import java.util.Arrays; import java.util.List;

public class App {

public static void main(String[] args) throws IOException {

    // 設定 IronPDF 授權金鑰
    License.setLicenseKey(&quot;IronPDF-MYLICENSE-KEY-1EF01&quot;);

    // 使用 CSS 換行符號將 HTML 轉為 3 頁的 PDF 檔案
    String html = &quot;<p> .NET 6 </p>&quot; +
                  &quot;<p> 這是第一頁 </p>&quot; +
                  &quot;<div style="page-break-after:> always;"></div>&quot; +
                  &quot;<p> 這是第 2 頁</p>&quot; +
                  &quot;<div style="page-break-after:> always;"></div>&quot; +
                  &quot;<p> .NET 6 </p>&quot; +
                  &quot;<p> 這是第 3 頁</p>&quot;;

    PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);

    String oldText = &quot;.NET6&quot;;
    String newText = &quot;.NET7&quot;;

    // 頁面編號從 0 開始:0 = 第一頁,2 = 第三頁
    // 頁面索引 1(第二頁)已刻意省略
    List<integer> pages = Arrays.asList(0, 2);</integer>

    pdf.replaceText(PageSelection.pageRange(pages), oldText, newText);

    pdf.saveAs(&quot;replaceTextOnMultiplePages.pdf&quot;);
}

}


請注意IronPdf 中的所有頁面索引均採用從零開始的編號方式。 頁面 `0` 為第一頁,頁面 `1` 為第二頁,以此類推。)}]
當從 HTML 建立多頁 PDF 時,請使用 [CSS `page-break-after` 屬性](https://developer.mozilla.org/en-US/docs/Web/CSS/page-break-after)來控制頁面邊界的定位。 在渲染前設定正確的[自訂紙張尺寸](https://ironpdf.com/java/examples/custom-pdf-paper-size/)與[頁面方向](https://ironpdf.com/java/examples/pdf-page-orientation/),可確保在執行文字替換時,內容位置符合您的預期。 儲存後,請開啟 PDF 檔案並確認僅目標頁面有所變更,以驗證輸出結果。 ### 翻譯成果應呈現何種樣貌? <iframe loading="lazy" src="/static-assets/ironpdf-java/howto/find-replace-text/replaceTextOnMultiplePages.pdf" width="100%" height="400px"></iframe> <hr> ## 有哪些頁面選取選項可用? `PageSelection` 類別提供靜態工廠方法,涵蓋所有常見的目標設定模式。 無需建立實例; 直接在類別上呼叫方法。 所有索引均以零為起點。 ### 哪些方法適用於單一頁面,哪些適用於多頁? <table class="content__data-table" data-content-table> <caption>replaceText API 的 PageSelection 工廠方法</caption> | 方法 | 描述 | |---|---| | `PageSelection.allPages()` | 選取文件中的每一頁 | | `PageSelection.firstPage()` | 選取索引頁面 `0` | | `PageSelection.lastPage()` | 無論文件長度如何,皆選取最後一頁 | | `PageSelection.singlePage(int pageIndex)` | 透過零起始索引選取特定頁面 | | `PageSelection.pageRange(int startIndex, int endIndex)` | 選取從 `startIndex` 到 `endIndex`(含)的連續區間 | | `PageSelection.pageRange(List<Integer> pageList)` | 選取任意索引組所對應的頁面(例如,`[0, 2]` 會選取第 1 頁和第 3 頁) | </table> ### 何時該使用哪種 PageSelection 方法? `allPages()` 是執行全域搜尋與替換的最簡便選擇:只需一次呼叫,即可將整份文件中所有目標文字的出現處一併替換。 請使用 `firstPage()` 或 `lastPage()` 進行快速編輯,以處理封面頁或最後一頁的頁尾,同時不影響正文內容。 當文字出現在章節或節等連續頁面中時,請選擇 `pageRange(int, int)`。 當目標頁面非連續時,請使用 `pageRange(List<Integer>)`; 例如,當替換僅出現在第 1、3 和 7 頁的版本字串時。 處理[合併](https://ironpdf.com/java/examples/split-pdfs/)的[ PDF](https://ironpdf.com/java/examples/split-pdfs/) 或包含[書籤與大綱](https://ironpdf.com/java/how-to/bookmarks/)的文件時,請先識別每個邏輯區段的頁碼範圍,再進行針對性替換,以避免意外修改共用頁首或頁尾。 [IronPDF for Java API 參考文件](https://ironpdf.com/object-reference/api/)列出了所有 `PageSelection` 重載方法,並附有完整的參數說明。
重要事項將 `replaceText` 的呼叫包裹在 try-catch 區塊中。 當在任何目標頁面中均未找到指定的搜尋文字時,此方法會拋出執行時例外。 驗證步驟(提取文字並確認字串存在)可防止生產環境中發生意外失敗。)}]
### 如何一次替換所有頁面的文字? `PageSelection.allPages()` 能在單次呼叫中執行全文件範圍的替換,這是進行全局標記替換最有效率的方法。 以下範例從磁碟載入 PDF 檔案,並將整份文件中所有出現的佔位符代碼進行替換: ```java :title=在所有頁面中替換文字 //:path=/static-assets/pdf/content-code-examples/how-to/find-replace-text/replace-text-all-pages.java import com.ironsoftware.IronPDF.*; import com.ironsoftware.IronPDF.edit.PageSelection; import java.io.IO/Exception; import java.nio.file.Paths; public class App { public static void main(String[] args) throws IOException { // 設定 IronPDF 授權金鑰 License.setLicenseKey(&quot;IronPDF-MYLICENSE-KEY-1EF01&quot;); // 從磁碟載入現有 PDF 檔案 PdfDocument pdf = PdfDocument.fromFile(Paths.get(&quot;contract-template.pdf&quot;)); // 同時在每個頁面中替換佔位符代碼 // 這相當於針對每頁分別呼叫 replaceText pdf.replaceText(PageSelection.allPages(), &quot;{{VERSION}}&quot;, &quot;2.0&quot;); // 儲存更新後的文件 pdf.saveAs(&quot;contract-v2.pdf&quot;); } }

此模式與模板驅動的工作流程自然契合,在該流程中,相同的佔位符會出現在多個頁面的頁首、頁尾或正文中。 對於單頁文件,allPages()firstPage() 會產生相同的效果。 若頁數可能在執行時變動,請優先使用 allPages()


如何處理常見的文字替換情境?

Java 應用程式中的文字替換涵蓋多種模式,其複雜程度已超越單純的搜尋與替換。 了解該方法在各種情況下的運作方式,可於生產環境出現錯誤前加以預防。

區分大小寫的比對會如何影響結果?

replaceText 執行精確且區分大小寫的比對。 字串 "version 1.0""VERSION 1.0" 應視為三個獨立的值。 在對從磁碟載入的文件執行替換操作之前,請透過檢視原始來源,或從 PDF 中擷取文字並以程式化方式檢查,以確認確切的大小寫格式。

如何在 PDF 表單中替換文字?

根據 PDF 規格的定義,包含互動式表單欄位的 PDF 檔案會將其文字值與文件內容流分開儲存。 replaceText 方法作用於內容流,不會修改表單欄位的值。 若要更新表單欄位內的文字,請改用 IronPDF 專用的表單建立與編輯 API。 在同一份文件中混合使用這兩種方法是安全的:表單欄位更新與內容串流替換不會相互干擾。

如何在基於範本的工作流程中更新文字?

常見的做法是維護一個包含佔位符代碼(例如 {{CUSTOMER_NAME}}[INVOICE_DATE])的 PDF 範本,並在執行時將其替換為實際值。 每個佔位符請呼叫 replaceText 一次,並使用 PageSelection.allPages() 確保替換操作涵蓋該標記出現的所有位置。 對於由 HTML 生成的文件,此工作流程同樣適用於 renderHtmlAsPdf 後接一連串的替換呼叫。 可結合 PDF 水印背景與前景功能,在最終輸出中添加品牌標識或保密標記。

在 Java 中進行 PDF 文字替換的下一步是什麼?

本指南涵蓋了使用 PageSelection.firstPage() 進行單頁替換、使用 PageSelection.pageRange() 進行選擇性多頁替換、使用 PageSelection.allPages() 進行全文件替換,以及完整的 PageSelection 工廠方法集。 無論文件是從 HTML 渲染、從磁碟載入,還是透過合併多個來源組裝而成,同一個 replaceText API 皆能正常運作。

立即免費試用 IronPDF for Java,並將上述程式碼範例套用至您的文件中。 當您準備部署至生產環境時,請檢視授權選項。 授權採"每位開發者"計費,並包含一年產品更新服務。

準備好探索 IronPDF for Java 的更多功能了嗎? 瀏覽完整的 IronPDF for Java 操作指南,了解有關 PDF 生成、註解、數位簽章壓縮等功能的教學。

常見問題

如何使用 Java 替換 PDF 中的文字?

請使用 IronPdf 的 replaceText 方法。呼叫 pdf.replaceText(PageSelection.firstPage(), "oldText", "newText") 即可在指定頁面上替換所有舊文字。IronPdf 會在保留原始格式的前提下,找出並替換所有出現的文字。

replaceText 方法接受哪些參數?

此方法接受三個參數:用於指定要修改頁面的 PageSelection、包含要搜尋文字的字串,以及包含替換文字的字串。例如,pdf.replaceText(PageSelection.firstPage(), ".NET6", ".NET7") 會將第一頁上的所有出現處進行替換。

我可以僅替換特定頁面的文字嗎?

是的。請使用 PageSelection.firstPage() 取得第 0 PageSelection.lastPage() 取得最後一頁,PageSelection.singlePage(n) 透過零起始索引取得任意頁面,或使用 PageSelection.pageRange() 並傳入整數清單以取得非連續頁面。

若找不到待替換的文字,該如何處理?

當目標頁面中找不到目標文字時,IronPDF 會拋出執行時例外 (Exception_RemoteException)。請將呼叫封裝在 try-catch 區塊中,並可選擇先擷取 PDF 文字以驗證字串是否存在,再呼叫 replaceText 方法

文字比對是否區分大小寫?

是的。replaceText 方法執行精確且區分大小寫的比對。字串「Version 1.0」「version 1.0」「VERSION 1.0」將被視為三個不同的值。在呼叫該方法之前,請先確認大小寫是否完全一致。

replaceText 會修改表單欄位的值嗎?

不。replaceText 方法作用於 PDF 內容流,不會修改互動式表單欄位的值。若要更新表單欄位,請透過 PdfDocument 的表單方法,使用 IronPDF 專用的表單編輯 API。

如何一次替換所有頁面中的某個代碼?

請將 PageSelection.allPages() 作為 replaceText 的第一個參數。此方法能在單次呼叫中,將所有頁面中的目標文字全數替換,這是針對包含全文件佔位符的模板驅動工作流程的首選做法。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
版本: 2026.5 just released
Still Scrolling Icon

還在捲動嗎?

想要快速證明?
執行範例 觀看您的 HTML 變成 PDF。