PDF에서 텍스트를 바꾸는 방법
IronPDF for Java는 replaceText 메서드를 통해 기존 PDF 콘텐츠에 대한 직접적인 제어를 개발자에게 제공합니다. 생성된 보고서 일괄의 오타를 수정하거나, 템플릿 문서 전반에 걸친 버전 번호를 교체하거나, 고객별 데이터로 계약서를 개인화해야 하는 경우, 이 방법은 페이지 선택, 검색 문자열 및 대체 문자열을 받아 나머지를 처리합니다. 이 가이드는 단일 페이지 교체, 다중 페이지 타겟팅, 사용 가능한 모든 PageSelection 옵션 및 템플릿 기반 워크플로를 위한 실용적인 패턴을 다룹니다.
퀵스타트: PDF에서 텍스트 교체하기
IronPDF 의존성을 추가하고, PDF를 로드하거나 렌더링한 후, replaceText를 호출하여 결과를 저장합니다:
:title=Quickstart Replace Text
//: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.IOException;
public class App {
public static void main(String[] args) throws IOException {
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");
pdf.replaceText(PageSelection.firstPage(), ".NET6", ".NET7");
pdf.saveAs("replaceText.pdf");
}
}
:title=Quickstart Replace Text
//: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.IOException;
public class App {
public static void main(String[] args) throws IOException {
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");
pdf.replaceText(PageSelection.firstPage(), ".NET6", ".NET7");
pdf.saveAs("replaceText.pdf");
}
}
최소 워크플로우(5단계)
- PDF 파일의 텍스트를 바꾸는 Java 라이브러리를 다운로드하세요.
- 기존 PDF를 로드하거나 HTML에서 하나를 렌더
pdf.replaceText(PageSelection, oldText, newText)를 호출하여 대상 페이지에서 교체PageSelection메서드를 사용하여 수정되는 페이지를 제어pdf.saveAs("output.pdf")으로 업데이트된 PDF를 저장 및 내보내기
한 페이지 내의 텍스트를 어떻게 바꿀 수 있나요?
replaceText 메서드는 세 개의 인수를 받습니다: 하나 이상의 페이지를 대상으로 하는 PageSelection, 찾을 정확한 텍스트, 대체 문자열입니다. 첫 번째 페이지를 대상으로 하려면 PageSelection.firstPage()를 전달하세요. 해당 페이지의 검색 문자열의 모든 인스턴스는 한 번의 호출로 교체됩니다. 대상 페이지에서 텍스트를 찾을 수 없는 경우, 메서드는 런타임 예외를 던집니다. 아래 스크린샷은 콘솔에서 그 예외가 어떻게 보이는지 보여줍니다.

replaceText가 어떤 매개변수를 수용합니까?
메서드 시그니처는 replaceText(PageSelection pageSelection, String oldText, String newText)입니다. 매칭은 기본적으로 대소문자를 구분합니다: "net6"와 "NET6"는 다른 문자열로 간주됩니다. 메서드를 호출하기 전에 렌더링된 PDF에서 정확한 대소문자를 확인하세요. PDF의 텍스트 콘텐츠를 먼저 추출하여 정확한 텍스트를 확인할 수 있습니다: PDF의 텍스트 콘텐츠 추출. IronPDF Java 종속성은 Maven Central에 게시되어 있으며 Java 8 이상이 필요합니다.
:title=Replace Text on First Page
//: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.IOException;
public class App {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key (required for production use)
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Render HTML content into a PDF document
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");
// Define the search and replacement strings
String oldText = ".NET6";
String newText = ".NET7";
// Replace all instances of oldText on the first page only
// PageSelection.firstPage() targets page index 0
pdf.replaceText(PageSelection.firstPage(), oldText, newText);
// Save the modified PDF
pdf.saveAs("replaceText.pdf");
}
}
:title=Replace Text on First Page
//: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.IOException;
public class App {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key (required for production use)
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Render HTML content into a PDF document
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");
// Define the search and replacement strings
String oldText = ".NET6";
String newText = ".NET7";
// Replace all instances of oldText on the first page only
// PageSelection.firstPage() targets page index 0
pdf.replaceText(PageSelection.firstPage(), oldText, newText);
// Save the modified PDF
pdf.saveAs("replaceText.pdf");
}
}
replaceText 메서드는 IronPDF의 HTML to PDF 변환 워크플로우와 자연스럽게 통합됩니다. HTML 템플릿을 먼저 렌더링한 다음, 동적 값을 삽입하기 위해 텍스트 교체를 적용합니다. 이렇게 하면 HTML을 깔끔하게 유지하면서도 개인화된 출력을 생성할 수 있습니다. 디스크에서 로드된 문서의 경우 renderHtmlAsPdf 대신 PdfDocument.fromFile에 파일 경로를 전달하세요.
출력 결과는 어떻게 나타나나요?
여러 페이지의 텍스트를 어떻게 교체합니까?
첫 페이지만 아니라 특정 페이지를 대상으로 하려면 PageSelection.pageRange(List<Integer>)에 0 기반 페이지 번호 목록을 전달하세요. 이 메서드는 리스트 내 모든 페이지의 검색 텍스트를 교체하고 다른 모든 페이지는 그대로 둡니다. 이 패턴은 특정 페이지에만 나타나는 버전 문자열이 있는 일괄 생성된 보고서나 알려진 페이지에 일관된 헤더 또는 푸터가 있는 문서에 적합합니다.
페이지 리스트를 사용했을 때 수정되는 페이지는 무엇입니까?
아래 예제에서는 HTML에서 세 페이지 PDF를 생성합니다. 이 대체는 페이지 0 및 2 (첫 번째 및 세 번째 페이지)에서 실행됩니다. 페이지 1 (두 번째 페이지)는 원본 텍스트를 변경하지 않고 유지됩니다. 페이지 인덱스는 항상 0부터 시작하며, 이는 Java의 0 기반 배열 규칙과 일관합니다.
:title=Replace Text on Multiple Specific Pages
//: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.IOException;
import java.util.Arrays;
import java.util.List;
public class App {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Build a 3-page PDF from HTML using CSS page breaks
String html = "<p> .NET6 </p>" +
"<p> This is 1st Page </p>" +
"<div style='page-break-after: always;'></div>" +
"<p> This is 2nd Page</p>" +
"<div style='page-break-after: always;'></div>" +
"<p> .NET6 </p>" +
"<p> This is 3rd Page</p>";
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
String oldText = ".NET6";
String newText = ".NET7";
// Pages are zero-indexed: 0 = first page, 2 = third page
// Page index 1 (second page) is intentionally excluded
List<Integer> pages = Arrays.asList(0, 2);
pdf.replaceText(PageSelection.pageRange(pages), oldText, newText);
pdf.saveAs("replaceTextOnMultiplePages.pdf");
}
}
:title=Replace Text on Multiple Specific Pages
//: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.IOException;
import java.util.Arrays;
import java.util.List;
public class App {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Build a 3-page PDF from HTML using CSS page breaks
String html = "<p> .NET6 </p>" +
"<p> This is 1st Page </p>" +
"<div style='page-break-after: always;'></div>" +
"<p> This is 2nd Page</p>" +
"<div style='page-break-after: always;'></div>" +
"<p> .NET6 </p>" +
"<p> This is 3rd Page</p>";
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
String oldText = ".NET6";
String newText = ".NET7";
// Pages are zero-indexed: 0 = first page, 2 = third page
// Page index 1 (second page) is intentionally excluded
List<Integer> pages = Arrays.asList(0, 2);
pdf.replaceText(PageSelection.pageRange(pages), oldText, newText);
pdf.saveAs("replaceTextOnMultiplePages.pdf");
}
}
0는 첫 번째 페이지, 페이지 1는 두 번째 페이지 등입니다.
HTML에서 다중 페이지 PDF를 생성할 때, 페이지 경계가 드는 위치를 제어하기 위해 CSS page-break-after 속성을 사용하세요. 렌더링하기 전에 사용자 정의 용지 크기와 페이지 방향을 올바르게 설정함으로써 텍스트 교체가 실행될 때 콘텐츠 위치가 기대에 부합하도록 보장합니다. 저장 후 PDF를 열고 대상 페이지만 변경되었는지 확인하여 출력을 검증합니다.
출력 결과는 어떻게 나타나나요?
페이지 선택 옵션에는 어떤 것들이 있나요?
PageSelection 클래스는 모든 일반적인 타겟팅 패턴을 다루는 정적 팩토리 메서드를 제공합니다. 인스턴스 생성을 필요로 하지 않습니다; 클래스에서 직접 메서드를 호출하세요. 모든 인덱스는 0 기반입니다.
단일 페이지와 다중 페이지를 타겟팅하는 메서드는 무엇인가요?
각 페이지 선택 방법은 언제 사용해야 할까요?
allPages()는 전역 찾기 및 대체에 가장 간단한 선택입니다: 전체 문서에서 대상 텍스트의 모든 인스턴스가 한 번의 호출로 대체됩니다. 페이지나 마지막 페이지의 푸터를 다루면서 본문을 건드리지 않으려면 빠른 편집에 firstPage() 또는 lastPage()를 사용하세요. 텍스트가 장이나 섹션과 같은 연속된 페이지 집합에 나타날 때 pageRange(int, int)를 선택하세요. 대상 페이지가 인접하지 않을 때 pageRange(List<Integer>)를 사용하세요. 예를 들어 페이지 1, 3, 7에만 나타나는 버전 문자열을 교체할 때 사용하세요.
병합된 PDF 또는 책갈피와 개요를 포함하는 문서 작업 시, 각 논리적 섹션의 페이지 범위를 먼저 식별한 다음, 공유된 머리글이나 바닥글을 실수로 수정하지 않도록 대상 교체를 적용합니다. IronPDF for Java API 레퍼런스에는 전체 매개변수 문서화와 함께 모든 PageSelection 오버로드가 나열되어 있습니다.
replaceText 호출을 try-catch 블록으로 감싸세요. 지정된 검색 텍스트가 대상 페이지 어느 곳에서도 발견되지 않으면 메서드는 런타임 예외를 던집니다. 텍스트를 추출하고 문자열이 존재함을 확인하는 검증 단계가 예기치 않은 생산 장애를 방지합니다.모든 페이지에서 텍스트를 한 번에 교체하려면 어떻게 해야 하나요?
PageSelection.allPages()는 문서 전반에 걸친 대체 작업을 한 번의 호출로 수행하며, 이는 전역적인 토큰 대체에 가장 효율적인 방법입니다. 아래 예제는 디스크에서 PDF를 로드하고 문서 전체에 있는 자리 표시자 토큰을 모두 교체합니다:
:title=Replace Text on All Pages
//: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.IOException;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF from disk
PdfDocument pdf = PdfDocument.fromFile(Paths.get("contract-template.pdf"));
// Replace the placeholder token on every page simultaneously
// This is equivalent to calling replaceText for each page individually
pdf.replaceText(PageSelection.allPages(), "{{VERSION}}", "2.0");
// Save the updated document
pdf.saveAs("contract-v2.pdf");
}
}
:title=Replace Text on All Pages
//: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.IOException;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF from disk
PdfDocument pdf = PdfDocument.fromFile(Paths.get("contract-template.pdf"));
// Replace the placeholder token on every page simultaneously
// This is equivalent to calling replaceText for each page individually
pdf.replaceText(PageSelection.allPages(), "{{VERSION}}", "2.0");
// Save the updated document
pdf.saveAs("contract-v2.pdf");
}
}
이 패턴은 템플릿 기반 워크플로우와 자연스럽게 결합되어 동일한 자리 표시자가 여러 페이지의 머리글, 바닥글 또는 본문 텍스트에 나타날 때 사용됩니다. 단일 페이지 문서의 경우, allPages()와 firstPage()가 동일한 결과를 생성합니다. 런타임에 페이지 수가 변동할 수 있을 때 allPages()를 선호하세요.
일반적인 텍스트 교체 시나리오를 어떻게 처리하나요?
Java 애플리케이션에서의 텍스트 교체는 단순한 검색 및 교체 이상의 여러 패턴을 포괄합니다. 각 경우에 메서드가 어떻게 작동하는지 이해하면 버그가 발생하기 전에 예방할 수 있습니다.
대소문자 구분 일치는 결과에 어떤 영향을 미칩니까?
replaceText는 정확하고 대소문자를 구분하여 매칭을 수행합니다. "Version 1.0", "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 팩토리 메서드 세트를 다루었습니다. 동일한 replaceText API는 문서가 HTML에서 렌더링되었든, 디스크에서 로드되었든, 여러 소스를 병합하여 조립되었든 상관없이 작동합니다.
IronPDF for Java 무료 체험을 시작하고, 위의 코드 예제를 통해 귀하의 문서에 대해 실행해 보세요. 생산 배포를 준비하면 라이선스 옵션을 검토하세요. 라이선스는 개발자별로 제공되며, 제품 업데이트 1년이 포함됩니다.
IronPDF for Java가 할 수 있는 다른 것을 보려고 준비되었나요? PDF 생성, 주석, 디지털 서명, 압축 등에 대한 튜토리얼을 보려면 IronPDF for Java 사용 설명서를 전체 확인하세요.
자주 묻는 질문
Java를 사용하여 PDF 파일의 텍스트를 바꾸는 방법은 무엇인가요?
IronPDF의 replaceText 메소드를 사용하세요. pdf.replaceText(PageSelection.firstPage(), "oldText", "newText")를 호출하여 지정된 페이지에서 모든 인스턴스의 옛 텍스트를 대체합니다. IronPDF는 원래의 포맷을 유지하는 동안 모든 발생을 찾고 대체합니다.
replaceText 메소드가 허용하는 매개변수는 무엇입니까?
메소드는 수정할 페이지를 지정하기 위한 PageSelection과 찾을 텍스트가 포함된 String, 및 대체 텍스트가 포함된 String을 허용합니다. 예를 들어, pdf.replaceText(PageSelection.firstPage(), ".NET6", ".NET7")는 첫 페이지에 있는 모든 인스턴스를 대체합니다.
특정 페이지의 텍스트만 바꿀 수 있나요?
네. 페이지 0에는 PageSelection.firstPage(), 마지막 페이지에는 PageSelection.lastPage(), 0 기반 인덱스를 사용하여 임의 페이지에는 PageSelection.singlePage(n), 또는 비연속적인 페이지에는 PageSelection.pageRange()와 정수 목록을 사용하세요.
대체할 텍스트를 찾을 수 없으면 어떻게 되나요?
대상 텍스트를 지정된 페이지에서 찾을 수 없는 경우 IronPDF는 런타임 예외(Exception_RemoteException)를 발생시킵니다. 호출을 try-catch 블록으로 감싸고, replaceText를 호출하기 전에 문자열이 존재하는지 확인하기 위해 PDF 텍스트를 먼저 추출하는 것을 선택할 수 있습니다.
텍스트 매칭은 대소문자를 구별합니까?
네. replaceText 메소드는 정확한 대소문자 구별 일치를 수행합니다. 문자열 "Version 1.0", "version 1.0", 및 "VERSION 1.0"은 세 가지 서로 다른 값으로 처리됩니다. 메소드를 호출하기 전에 정확한 대소문자를 확인하세요.
replaceText가 양식 필드 값을 수정합니까?
아니요. replaceText 메소드는 PDF 콘텐츠 스트림에서 동작하며 상호작용형 양식 필드 값을 수정하지 않습니다. 양식 필드를 업데이트하려면 PdfDocument 양식 메소드를 통한 IronPDF의 전용 양식 편집 API를 사용하세요.
모든 페이지에서 한 번에 토큰을 대체하려면 어떻게 하나요?
replaceText의 첫 번째 인수로 PageSelection.allPages()를 사용하세요. 이는 하나의 호출에서 전체 문서의 모든 페이지에 대상 텍스트의 모든 인스턴스를 대체합니다. 이는 문서 전체에 널리 사용되는 자리표시자를 사용하는 템플릿 중심 워크플로우에 대한 선호하는 접근 방식입니다.


