PDF/A에서 텍스트를 바꾸는 방법
IronPDF for Java는 개발자가 replaceText 메서드를 통해 기존 PDF 콘텐츠를 직접 제어할 수 있게 해줍니다. 생성된 보고서 일괄에서 오타를 수정하거나, 템플릿 문서 전반에 걸쳐 버전 번호를 교체하거나, 고객별 데이터로 계약서를 맞춤 설정해야 하는 경우, 이 메서드는 페이지 선택, 검색 문자열, 대체 문자열을 입력받으면 나머지는 자동으로 처리합니다. 이 가이드에서는 단일 페이지 교체, 다중 페이지 대상 지정, 사용 가능한 모든 PageSelection 옵션, 그리고 템플릿 기반 워크플로를 위한 실용적인 패턴을 다룹니다.
빠른 시작: PDF 내 텍스트 교체
IronPDF 종속성을 추가하고, PDF를 로드하거나 렌더링한 다음, replaceText를 호출하고, 결과를 저장합니다:
```Java :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.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">PDF 내 텍스트를 교체하려면 Java 라이브러리를 다운로드하세요</a></li>
<li>기존 PDF를 불러오거나 HTML에서 PDF를 생성합니다</li>
<li>Call <code>pdf.replaceText(PageSelection, oldText, newText)</code> 을 호출하여 대상 페이지에서 대체하십시오</li>
<li>* <code>PageSelection</code> 메서드를 사용하여 수정할 페이지를 제어합니다</li>
<li>업데이트된 PDF를 저장하고 내보내려면 <code>pdf.saveAs("output.pdf")</code></li>
</ol>
</div>
## 단일 페이지의 텍스트를 어떻게 교체하나요?
`replaceText` 메서드는 세 가지 인수를 받습니다: 하나 이상의 페이지를 대상으로 하는 `PageSelection`, 찾을 정확한 텍스트, 그리고 대체 문자열입니다. 첫 번째 페이지를 대상으로 하려면 `PageSelection.firstPage()`를 전달하십시오. 해당 페이지에서 검색 문자열이 나타나는 모든 부분이 단일 호출로 일괄 교체됩니다. 대상 페이지에서 텍스트를 찾을 수 없는 경우, 이 메서드는 런타임 예외를 발생시킵니다. 아래 스크린샷은 콘솔에서 해당 예외가 어떻게 표시되는지 보여줍니다.

### replaceText는 어떤 매개변수를 받나요?
메서드 시그니처는 `replaceText(PageSelection pageSelection, String oldText, String newText)`입니다. 기본적으로 대소문자를 구분합니다: `"net6"`와 `"NET6"`는 서로 다른 문자열로 처리됩니다. 메서드를 호출하기 전에 렌더링된 PDF에서 대소문자 구분을 정확히 확인하십시오. 먼저 [PDF의 텍스트 내용을 추출하여](https://ironpdf.com/java/examples/extract-image-from-pdf/) 정확한 문구를 확인할 수 있습니다. IronPDF Java 종속성은 [Maven ](https://central.sonatype.com/artifact/com.ironsoftware/ironpdf)Central에 게시되어 있으며 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("IronPDF-MYLICENSE-KEY-1EF01");
// HTML 콘텐츠를 PDF 문서로 렌더링
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>.NET6</h1>");
// 검색 및 교체 문자열 정의
String oldText = ".NET6";
String newText = ".NET7";
// 첫 페이지에서만 oldText가 포함된 모든 부분을 대체하십시오
// PageSelection.firstPage()는 페이지 인덱스 0을 대상으로 합니다
pdf.replaceText(PageSelection.firstPage(), oldText, newText);
// 수정된 PDF 저장
pdf.saveAs("replaceText.pdf");
}
}
replaceText 메서드는 IronPDF의 HTML-PDF 변환 워크플로우와 자연스럽게 통합됩니다. 먼저 HTML 템플릿을 렌더링한 다음, 텍스트 치환을 적용하여 동적 값을 삽입하십시오. 이를 통해 HTML을 깔끔하게 유지하면서도 개인화된 출력을 생성할 수 있습니다. 디스크에서 로드된 문서의 경우, renderHtmlAsPdf 대신 PdfDocument.fromFile에 파일 경로를 전달하십시오.
번역 결과물은 어떻게 보이나요?
여러 페이지에 걸쳐 있는 텍스트를 어떻게 교체하나요?
첫 번째 페이지가 아닌 특정 페이지를 대상으로 하려면, 0을 기점으로 한 페이지 번호 목록을 PageSelection.pageRange(List<Integer>)에 전달하십시오. 이 메서드는 목록에 있는 모든 페이지의 검색 텍스트를 대체하고, 그 외의 모든 페이지는 그대로 둡니다. 이 패턴은 알려진 페이지에 일관된 머리글이나 바닥글이 있는 문서, 또는 특정 페이지에만 버전 문자열이 표시되는 일괄 생성된 보고서에 적합합니다.
페이지 목록을 사용할 때 어떤 페이지가 수정됩니까?
아래 예시에서는 HTML을 기반으로 3페이지 분량의 PDF가 생성됩니다. 이 대체 내용은 0 및 2 페이지(첫 번째 및 세 번째 페이지)에서 실행됩니다. 1 페이지(두 번째 페이지)는 원문을 그대로 유지합니다. 페이지 인덱스는 Java의 0을 기준으로 하는 배열 규칙에 따라 항상 0에서 시작합니다.
```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("IronPDF-MYLICENSE-KEY-1EF01");
// CSS 페이지 나누기를 사용하여 HTML에서 3페이지 분량의 PDF 생성
String html = "<p> .NET6 </p>" +
"<p> 이것은 첫 번째 페이지입니다 </p>" +
"<div style="page-break-after:> always;"></div>" +
"<p> 이것은 2페이지입니다</p>" +
"<div style="page-break-after:> always;"></div>" +
"<p> .NET 6 </p>" +
"<p> 이것은 3번째 페이지입니다</p>";
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
String oldText = ".NET6";
String newText = ".NET7";
// 페이지 번호는 0부터 시작합니다: 0 = 첫 페이지, 2 = 세 번째 페이지
// 페이지 인덱스 1(두 번째 페이지)은 의도적으로 제외되었습니다
목록<integer> 페이지 = Arrays.asList(0, 2);</integer>
pdf.replaceText(PageSelection.pageRange(pages), oldText, newText);
pdf.saveAs("replaceTextOnMultiplePages.pdf");
}
}
참고해 주세요IronPdf의 모든 페이지 인덱스는 0을 기준으로 합니다. (페이지 `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` 클래스는 모든 일반적인 타겟팅 패턴을 다루는 정적 팩토리 메서드를 제공합니다. 인스턴스 생성은 필요하지 않습니다; 클래스에서 메서드를 직접 호출합니다. 모든 인덱스는 0부터 시작합니다.
### 어떤 메서드가 단일 페이지를 대상으로 하고, 어떤 메서드가 여러 페이지를 대상으로 합니까?
<table class="content__data-table" data-content-table>
<caption>replaceText API용 PageSelection 팩토리 메서드</caption>
| 방법 | 설명 |
|---|---|
| `PageSelection.allPages()` | 문서의 모든 페이지 선택 |
| `PageSelection.firstPage()` | index 페이지 선택 `0` |
| `PageSelection.lastPage()` | 문서 길이와 관계없이 마지막 페이지를 선택합니다 |
| `PageSelection.singlePage(int pageIndex)` | 0을 기준으로 한 인덱스를 사용하여 특정 페이지 하나를 선택합니다 |
| `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페이지에만 나타나는 버전 문자열을 대체할 때와 같이.
[병합된 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` 오버로드와 함께 전체 매개변수 설명이 나열되어 있습니다.
중요한Wrap `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("IronPDF-MYLICENSE-KEY-1EF01");
// 디스크에서 기존 PDF 불러오기
PdfDocument pdf = PdfDocument.fromFile(Paths.get("contract-template.pdf"));
// 모든 페이지에서 동시에 자리 표시자 토큰을 교체하십시오
// 이는 각 페이지마다 개별적으로 replaceText를 호출하는 것과 동일합니다
pdf.replaceText(PageSelection.allPages(), "{{VERSION}}", "2.0");
// 업데이트된 문서 저장
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 팩토리 메서드 전체 세트를 다루었습니다. 문서가 HTML에서 렌더링되었든, 디스크에서 로드되었든, 아니면 여러 소스를 병합하여 조립되었든 상관없이 동일한 replaceText API가 작동합니다.
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()를 사용하세요. 이는 하나의 호출에서 전체 문서의 모든 페이지에 대상 텍스트의 모든 인스턴스를 대체합니다. 이는 문서 전체에 널리 사용되는 자리표시자를 사용하는 템플릿 중심 워크플로우에 대한 선호하는 접근 방식입니다.


