자바를 이용해 PDF 양식을 작성하는 방법 (튜토리얼)
IronPDF를 사용하면 Java 개발자는 기존 PDF를 불러오고, getForm()을 사용하여 양식 필드에 접근하며, setFieldValue()을 사용하여 값을 설정하고, 작성된 문서를 저장함으로써 프로그래밍 방식으로 PDF 양식을 작성할 수 있습니다. 이는 비즈니스 애플리케이션에서 문서 처리 자동화를 간단하게 만들어줍니다.
빠른 시작: Java로 PDF 양식 작성
```Java {title="FillPDFForm.java"} //:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/quickstart.java // 1. Maven 프로젝트에 IronPDF 종속성을 추가합니다. // 2. PDF 양식을 불러오세요 PdfDocument form = PdfDocument.fromFile("form.pdf");
- 양식 필드를 작성하세요 form.getForm().setFieldValue("firstname", "John");
- 작성된 PDF 파일을 저장합니다.
form.saveAs(Paths.get("filled_form.pdf"));
Java를 사용하여 PDF 양식을 작성하는 방법
- Maven을 통해 IronPDF Java 라이브러리 설치
PdfDocument.fromFile()을 사용하여 폼 필드가 포함된 기존 PDF를 로드합니다.getForm()메소드로 폼에 접근합니다.setFieldValue(fieldName, value)을 사용하여 필드 값을 설정합니다.saveAs()로 채워진 문서를 저장합니다.
이 기사는 Java에서 PDF 폼을 프로그래밍적으로 채우는 방법을 다룹니다. 일반적인 시나리오는 애플리케이션이 UI를 통해 수집한 사용자 데이터를 아카이빙, 준수, 또는 후속 처리용으로 PDF 형식으로 유지해야 하는 경우입니다.
사용자 입력이 캡처된 후, 애플리케이션은 종종 사전에 존재하는 PDF 템플릿에 데이터를 직접 주입해야 합니다. 여러 Java PDF 라이브러리가 이 작업을 처리하며, Apache PDFBox, iText, IronPDF 등이 포함됩니다. 이 가이드에서는 IronPDF를 사용하여 텍스트 필드, 체크박스, 라디오 버튼, 드롭다운 목록과 같은 대화형 폼을 채우는 방법을 설명합니다. 관련 문서 워크플로를 구축하는 개발자는 Java에서 PDF 폼을 처음부터 만드는 가이드를 참조하십시오.
Java용 IronPDF 란 무엇입니까?
IronPDF는 PDF 문서를 생성, 편집 및 조작하기 위한 Java PDF 라이브러리입니다. 어떤 Maven 기반 Java 프로젝트에도 통합되며 일반적인 PDF 작업을 최소한의 보일러플레이트로 달성할 수 있는 깔끔한 API를 노출합니다.
이 라이브러리는 전체 PDF 라이프사이클을 포괄합니다: HTML을 PDF로 렌더링, 폼 데이터 읽기 및 쓰기, 디지털 서명 추가, 보안 설정 적용, 문서 압축 그리고 인쇄. 특히 폼 작업의 경우, IronPDF는 원본 형식을 유지하면서 PDF 문서의 모든 필드 유형에 프로그래머틱 액세스를 제공합니다. 이는 대량 폼 처리, 데이터베이스 기록으로 템플릿을 미리 채우거나 더 큰 Java 워크플로에 폼 채우기를 연결하는 데 적합합니다. IronPDF Java API 레퍼런스에서 사용 가능한 클래스 및 메소드 전체 목록을 보세요.
Maven 프로젝트에 IronPDF를 설치하는 방법은 무엇입니까?
pom.xml 파일에 다음 종속성 블록을 추가하여 Java용 IronPDF for Java를 설치하십시오.
pom.xml를 열고 <dependencies> 요소 안에 종속성을 삽입한 다음, mvn install를 실행하여 라이브러리를 다운로드하십시오. 사용 가능한 버전은 Maven Central에 나열되어 있습니다.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/maven-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/maven-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
설치 후, Java 클래스에 com.ironsoftware.ironpdf.PdfDocument 및 com.ironsoftware.ironpdf.render.ChromePdfRenderOptions를 임포트하여 양식 채우기 API에 액세스하십시오. 클라우드 플랫폼 배포 지침은 AWS, Azure, Google Cloud 가이드를 참조하세요.
PdfDocument 호출 전에 IronPdf.licenseKey 시스템 속성을 설정하십시오.Java에서 HTML을 사용하여 PDF 폼을 생성 및 채우는 방법은 무엇입니까?
일관된 구조의 PDF를 일관되게 생성하는 가장 신뢰할 만한 방법은 HTML로 양식을 정의하고 IronPDF로 렌더링하는 것입니다. 이 라이브러리는 HTML <input> 요소를 대화형 PDF 양식 필드로 직접 변환합니다.
다음 코드는 HTML 문자열에서 두 필드의 PDF 폼을 생성하고 두 필드를 모두 채웁니다:
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/create-and-fill-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.render.ChromePdfRenderOptions;
import java.io.IOException;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) throws IOException {
// Define an HTML form with two text input fields
String formHTML = "<html>"
+ "<body>"
+ "<h2>Editable PDF Form</h2>"
+ "<form>"
+ "First name: <br><input type='text' name='firstname' value=''><br>"
+ "Last name: <br><input type='text' name='lastname' value=''>"
+ "</form>"
+ "</body>"
+ "</html>";
// Enable HTML-to-form-field conversion during rendering
ChromePdfRenderOptions renderOptions = new ChromePdfRenderOptions();
renderOptions.setCreatePdfFormsFromHtml(true);
// Render HTML to PDF and save the blank template
PdfDocument.renderHtmlAsPdf(formHTML, renderOptions)
.saveAs(Paths.get("assets/BasicForm.pdf"));
// Load the template and fill in field values
PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm.pdf"));
form.getForm().setFieldValue("firstname", "Minnie");
form.getForm().setFieldValue("lastname", "Mouse");
// Save the completed form to a new file
form.saveAs(Paths.get("assets/BasicForm_Filled.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/create-and-fill-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.render.ChromePdfRenderOptions;
import java.io.IOException;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) throws IOException {
// Define an HTML form with two text input fields
String formHTML = "<html>"
+ "<body>"
+ "<h2>Editable PDF Form</h2>"
+ "<form>"
+ "First name: <br><input type='text' name='firstname' value=''><br>"
+ "Last name: <br><input type='text' name='lastname' value=''>"
+ "</form>"
+ "</body>"
+ "</html>";
// Enable HTML-to-form-field conversion during rendering
ChromePdfRenderOptions renderOptions = new ChromePdfRenderOptions();
renderOptions.setCreatePdfFormsFromHtml(true);
// Render HTML to PDF and save the blank template
PdfDocument.renderHtmlAsPdf(formHTML, renderOptions)
.saveAs(Paths.get("assets/BasicForm.pdf"));
// Load the template and fill in field values
PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm.pdf"));
form.getForm().setFieldValue("firstname", "Minnie");
form.getForm().setFieldValue("lastname", "Mouse");
// Save the completed form to a new file
form.saveAs(Paths.get("assets/BasicForm_Filled.pdf"));
}
}
첫 번째 블록에서는 ChromePdfRenderOptions와 setCreatePdfFormsFromHtml(true)를 사용하여 렌더링 엔진에 HTML <input> 요소를 정적 텍스트가 아닌 활성 PDF 양식 필드로 처리하도록 지시합니다. 렌더링된 PDF는 재사용 가능한 템플릿으로 저장됩니다. 두 번째 블록은 해당 템플릿을 불러온 다음, 각 필드의 이름을 지정하여 getForm().setFieldValue()를 호출하고, 그 결과를 별도의 출력 파일에 기록하며, 향후 사용을 위해 원본 템플릿은 그대로 유지합니다.
출력 결과는 어떻게 나타나나요?
첫 렌더링은 두 개의 빈 텍스트 필드를 포함하는 PDF를 생성합니다. 어떤 PDF 리더에서도 완전히 편집 가능합니다.

setFieldValue()이 실행된 후, 두 필드 모두 제공된 데이터로 채워집니다:

내가 만들지 않은 기존 PDF 폼을 채우는 방법은 무엇입니까?
많은 실제 작업 흐름은 이미 이름 있는 필드를 포함하는 서드파티 PDF 템플릿(정부 양식, 보험 문서, 공급업체 계약서)을 수신합니다. 이들을 불러오고 채우는 과정은 동일합니다. PdfDocument.fromFile()을 사용하여 문서를 불러온 다음, getForm().setFieldValue()을 사용하여 각 필드의 이름을 지정하여 설정합니다.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-existing-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;
import java.nio.file.Paths;
public class FillExistingForm {
public static void main(String[] args) throws IOException {
// Load a third-party fillable PDF
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));
// Set text field values by field name
form.getForm().setFieldValue("applicant_name", "Jane Smith");
form.getForm().setFieldValue("date_of_birth", "1985-06-14");
form.getForm().setFieldValue("reference_number", "REF-2024-00421");
// Save the completed application
form.saveAs(Paths.get("output/application_filled.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-existing-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;
import java.nio.file.Paths;
public class FillExistingForm {
public static void main(String[] args) throws IOException {
// Load a third-party fillable PDF
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));
// Set text field values by field name
form.getForm().setFieldValue("applicant_name", "Jane Smith");
form.getForm().setFieldValue("date_of_birth", "1985-06-14");
form.getForm().setFieldValue("reference_number", "REF-2024-00421");
// Save the completed application
form.saveAs(Paths.get("output/application_filled.pdf"));
}
}
기존 PDF에서 필드 이름을 발견하기 위해서는, Adobe Acrobat Reader에서 문서를 열고, 필드 중 하나를 마우스 우클릭한 다음 "속성"을 선택하십시오. 필드 이름은 일반 탭에 나타납니다. 또는 모든 필드를 프로그래밍 방식으로 반복합니다:
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/list-form-fields.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.form.FormField;
import java.nio.file.Paths;
public class ListFormFields {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));
// Print the name and type of every form field
for (FormField field : form.getForm().getFields()) {
System.out.println("Field: " + field.getName()
+ " | Type: " + field.getType());
}
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/list-form-fields.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.form.FormField;
import java.nio.file.Paths;
public class ListFormFields {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));
// Print the name and type of every form field
for (FormField field : form.getForm().getFields()) {
System.out.println("Field: " + field.getName()
+ " | Type: " + field.getType());
}
}
}
데이터를 기록하기 전에 필드 이름을 PRINT하면, 이름이 일치하지 않을 때 setFieldValue()이 아무런 오류 메시지 없이 실패하는 것을 방지할 수 있습니다. PDF 문서의 필드 이름은 대소문자를 구분하므로, "firstname"와 "FirstName"는 서로 다른 필드로 간주됩니다.
getForm().getFields()는 FormField 객체 목록을 반환합니다. 각 라이브러리는 getName(), getType() 및 getValue()를 제공합니다. 이들은 외부 데이터 소스(예: 데이터베이스 또는 CSV 파일)에서 필드 이름을 읽는 동적 폼-채우기 루틴을 구축할 때 유용합니다.Java에서 체크박스와 라디오 버튼을 채우는 방법은 무엇입니까?
텍스트 필드는 문자열 값을 직접 입력할 수 있지만, 체크박스 및 라디오 버튼은 PDF 작성 시점에 정의된 특정 내보내기 값이 필요합니다. 각 필드에 맞는 올바른 내보내기 값 문자열과 함께 setFieldValue()을 사용하십시오.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-checkboxes-radio.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FillCheckboxesAndRadio {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/survey.pdf"));
// Check a checkbox by setting its exported value (often "Yes" or "On")
form.getForm().setFieldValue("agree_terms", "Yes");
// Select a radio button option by its exported value
form.getForm().setFieldValue("preferred_contact", "email");
form.saveAs(Paths.get("output/survey_filled.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-checkboxes-radio.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FillCheckboxesAndRadio {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/survey.pdf"));
// Check a checkbox by setting its exported value (often "Yes" or "On")
form.getForm().setFieldValue("agree_terms", "Yes");
// Select a radio button option by its exported value
form.getForm().setFieldValue("preferred_contact", "email");
form.saveAs(Paths.get("output/survey_filled.pdf"));
}
}
체크박스의 내보내기 값은 일반적으로 "Yes", "On" 또는 양식 작성자가 설정한 사용자 정의 문자열입니다. 라디오 버튼 그룹의 경우, 그룹 내 각 옵션은 동일한 필드 이름을 공유하지만 고유한 내보내기 값을 가지고 있습니다. 자동화된 채우기 루틴을 쓰기 전에 정확한 내보내기 값을 확인하려면 이전 섹션의 필드 나열 기술을 사용하십시오.
setFieldValue()가 체크박스 선택이나 라디오 버튼 선택을 확인하는 것으로 보이지 않는다면, 내보내기 값 문자열이 잘못된 것일 가능성이 높습니다. getFields() 필드를 나열하고 수동으로 확인한 PDF 사본에서 getValue()을 확인하여 올바른 문자열을 가져오십시오.Java를 사용하여 PDF 폼의 드롭다운 목록을 채우는 방법은 무엇입니까?
드롭다운 목록 필드(또는 콤보 박스 필드라고도 함)는 텍스트 필드와 동일한 API를 사용합니다. 옵션의 내보내기 값을 문자열로 setFieldValue()에 전달하십시오. 내보내기 값은 보통 표시되는 옵션 텍스트지만, 양식 작성자가 별도의 기본 값을 정의한 경우도 있습니다.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-dropdown.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FillDropdown {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/registration.pdf"));
// Set a dropdown/combo box field to a specific option
form.getForm().setFieldValue("country", "United States");
// Set a list box field (multi-select may require comma-separated values)
form.getForm().setFieldValue("subscription_tier", "Professional");
form.saveAs(Paths.get("output/registration_filled.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-dropdown.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FillDropdown {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/registration.pdf"));
// Set a dropdown/combo box field to a specific option
form.getForm().setFieldValue("country", "United States");
// Set a list box field (multi-select may require comma-separated values)
form.getForm().setFieldValue("subscription_tier", "Professional");
form.saveAs(Paths.get("output/registration_filled.pdf"));
}
}
드롭다운 내보내기 값이 표시된 레이블과 다른 경우, getFields()를 사용하여 해당 필드의 사용 가능한 옵션을 확인하십시오. 필드 정의의 어떤 옵션과도 일치하지 않는 값을 전달하면 예외 없이 선택이 변경되지 않으므로 일괄 실행 전에 내보내기 값을 유효성 검사하여 조용한 데이터 손실을 방지합니다.
FormField을 FormComboBoxField로 형변환하고 getOptions()을 호출하십시오. 이렇게 하면 해당 드롭다운의 유효한 내보내기 값 목록이 반환됩니다.Java에서 채워진 PDF 폼을 평면화하는 방법은 무엇입니까?
평면화는 모든 폼 필드를 정적이고 수정 불가능한 콘텐츠로 변환합니다. 이는 수신인이 제출된 데이터를 변경하는 것을 방지하며 많은 아카이빙 및 컴플라이언스 사용 사례에 필요합니다. IronPDF는 PDF 조작 기능의 일부로 폼 평면화를 지원합니다.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/flatten-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FlattenForm {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm_Filled.pdf"));
// Flatten all form fields -- values become static text
form.getForm().flatten();
form.saveAs(Paths.get("output/BasicForm_Archived.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/flatten-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FlattenForm {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm_Filled.pdf"));
// Flatten all form fields -- values become static text
form.getForm().flatten();
form.saveAs(Paths.get("output/BasicForm_Archived.pdf"));
}
}
flatten()가 실행된 후에는 출력 PDF에 대화형 양식 필드가 남아 있지 않습니다. 문서 크기는 폼 필드 오버레이 레이어가 제거되면서 일반적으로 감소합니다. 평면화된 PDF는 수신자가 제출한 값을 수정할 위험 없이 배포해도 안전합니다.
Java에서 PDF 폼 채우기에 대한 다음 단계는 무엇입니까?
IronPDF는 Java에서 PDF 폼을 채우기 위한 집중적이고 최소 보일러플레이트 API를 제공합니다. getForm() 메서드는 텍스트 필드, 체크박스, 라디오 버튼 및 드롭다운 목록에 직접 액세스할 수 있게 해줍니다. 보관이 필요한 경우, flatten()은 입력된 모든 데이터를 정적 콘텐츠로 고정합니다.
PDF 문서 워크플로의 다음 단계에 대한 가이드를 탐색하십시오:
- Java에서 HTML을 사용하여 PDF 양식 생성: 프로그래밍 방식으로 사용자 정의 폼 템플릿 만들기
- Java에서 HTML을 PDF로 변환: 전체 HTML 페이지 및 조각을 PDF 문서로 렌더링
- PDF 보안 및 비밀번호 보호: 배포 전에 채워진 폼에 대한 접근 제한
- Java에 대한 디지털 서명: 인증서의 진위를 보장하기 위해 서명 완성된 양식
- IronPDF Java API 레퍼런스: 클래스 및 메소드에 대한 완전한 문서
Java용 IronPDF의 무료 체험판 시작을 통해 직접 프로젝트에서 폼 채우기를 테스트하세요. 배포 준비가 되었다면 당신의 팀의 요구에 맞는 계획을 찾기 위해 IronPDF 라이센스 옵션을 확인하세요.
자주 묻는 질문
Java를 사용하여 PDF 양식을 작성하는 기본적인 단계는 무엇입니까?
IronPDF Maven 종속성을 추가하고, PdfDocument.fromFile()으로 PDF를 로드하고, getForm()으로 양식 필드에 접근하고, 각 필드에 대해 setFieldValue(fieldName, value)를 호출하고, saveAs()로 결과를 저장합니다.
기존 PDF에서 필드 이름을 어떻게 찾습니까?
Adobe Acrobat Reader에서 PDF를 열고, 필드 위에서 마우스 우클릭 후, 속성을 선택하세요. 필드 이름은 일반 탭에 나타납니다. 아니면 getForm().getFields()를 호출하여 모든 필드를 반복 처리하고 각 getName() 및 getType()을 프로그래밍 방식으로 출력합니다.
Java에서 체크박스 및 라디오 버튼을 어떻게 채우나요?
setFieldValue()를 필드의 내보내기 값 문자열과 함께 사용하세요. 체크박스 내보내기 값은 일반적으로 Yes 또는 On입니다. 라디오 버튼 그룹의 경우, 각 옵션은 같은 필드 이름을 공유하지만 고유한 내보내기 값을 가집니다. 필드가 응답하지 않으면, PDF의 수동으로 선택한 복사본의 getValue()를 검사하여 올바른 문자열을 찾으세요.
드롭다운 목록 필드를 어떻게 채우나요?
옵션의 내보내기 값을 사용하여 setFieldValue(fieldName, optionValue)를 호출하세요. 내보내기 값은 일반적으로 표시된 옵션 텍스트입니다. 프로그래밍 방식으로 사용할 수 있는 옵션을 나열하려면 FormField를 FormComboBoxField로 캐스팅하고 getOptions()를 호출하세요.
PDF 양식을 평면화하면 무엇이 변합니까?
평면화는 모든 대화형 양식 필드를 정적이고 편집할 수 없는 콘텐츠로 변환합니다. 저장하기 전에 getForm().flatten()을 호출하세요. 결과 PDF는 수신자가 편집할 수 없으며, 이는 많은 보관 및 규정 준수 워크플로우에 필요합니다.
IronPDF가 다른 도구로 만든 양식을 채울 수 있습니까?
예. PdfDocument.fromFile()는 생성 방법에 관계없이 모든 표준 작성 가능 PDF를 로드합니다. setFieldValue()를 호출하기 전에 getForm().getFields()로 필드 이름을 검사하세요. 필드 이름은 대소문자 구분이 있으며 양식 작성자에 따라 다릅니다.


