Jak wypełnić formularz PDF w Java (Poradnik)
IronPDF umożliwia programistom Java programowe wypełnianie formularzy PDF poprzez wczytywanie istniejących plików PDF, uzyskiwanie dostępu do pól formularza za pomocą getForm(), ustawianie wartości za pomocą setFieldValue() oraz zapisywanie wypełnionego dokumentu. To sprawia, że automatyzacja przetwarzania dokumentów w aplikacjach biznesowych jest prostsza.
Szybki start: Wypelnij formularz PDF w Java
```java {title="FillPDFForm.java"} //:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/quickstart.java // 1. Dodaj zależność IronPDF do projektu Maven // 2. Wczytaj swoj formularz PDF PdfDocument form = PdfDocument.fromFile("form.pdf"); // 3. Wypelnij pola formularza form.getForm().setFieldValue("firstname", "John"); // 4. Zapisz wypelniony PDF form.saveAs(Paths.get("filled_form.pdf"));
<div class="hsg-featured-snippet">
<h2>Jak wypełnić formularz PDF w Javie</h2>
<ol>
<li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">Zainstaluj bibliotekę IronPDF Java przez Maven</a></li>
<li>Załaduj istniejący PDF, który zawiera pola formularza, używając <code>PdfDocument.fromFile()</code></li>
<li>Uzyskaj dostęp do formularza za pomocą metody <code>getForm()</code></li>
<li>Ustaw wartości pól używając <code>setFieldValue(fieldName, value)</code></li>
<li>Zapisz wypełniony dokument za pomocą <code>saveAs()</code></li>
</ol>
</div>
Ten artykuł omawia, jak programowo wypełniać formularze PDF w Java. Częstym scenariuszem jest, gdy aplikacja zbiera dane użytkownika przez UI, które muszą być zachowane w formacie PDF do archiwizacji, zgodności lub przetwarzania dalszego.
Po przechwyceniu danych wejściowych użytkownika, aplikacje często muszą wstrzykiwać te dane bezpośrednio do istniejących szablonów PDF. Wiele bibliotek PDF dla Java obsługuje to zadanie, w tym [Apache PDFBox](https://pdfbox.apache.org), iText, i IronPDF. Ten przewodnik wyjaśnia, jak używać IronPDF do wypełniania interaktywnych formularzy z polami tekstowymi, polami wyboru, przyciskami radiowymi i listami rozwijanymi. Dla deweloperów budujących powiązane przepływy dokumentów, zobacz przewodnik [tworzenie formularzy PDF od podstaw w Java](https://ironpdf.com/java/how-to/create-forms/).
## Czym jest IronPDF dla Java?
IronPDF to [Java PDF library](https://ironpdf.com/java/) do tworzenia, edytowania i manipulowania dokumentami PDF. Integruje się z każdym projektem Java opartym na Maven i udostępnia czysty interfejs API, który umożliwia osiągnięcie typowych zadań PDF z minimalnym nadmiarem kodu.
Biblioteka pokrywa cały cykl życia PDF: renderowanie HTML do PDF, odczytywanie i zapisywanie danych formularzy, dodawanie podpisów cyfrowych, zastosowanie ustawień bezpieczeństwa, kompresję dokumentów i drukowanie. Dla pracy z formularzami w szczególności, IronPDF daje programowy dostęp do każdego typu pola w dokumencie PDF, zachowując oryginalne formatowanie. To sprawia, że jest dobrze dopasowany do przetwarzania partii formularzy, wstępnego wypełniania szablonów za pomocą rekordów z bazy danych, lub łączenia wypełniania formularzy w większym przepływie pracy Java. Zobacz [dokumentację API IronPDF dla Java](https://ironpdf.com/java/object-reference/api/) dla pełnej listy dostępnych klas i metod.
## Jak zainstalować IronPDF w projekcie Maven?
Dodaj następujący blok zależności do pliku `pom.xml`, aby zainstalować IronPDF for Java.
Otwórz `pom.xml` i wstaw zależność wewnątrz elementu `<dependencies>`, a następnie uruchom `mvn install`, aby pobrać bibliotekę. Dostępne wersje są wymienione na [Maven Central](https://search.maven.org/artifact/com.ironsoftware/ironpdf).
```xml
//: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>
Po instalacji zaimportuj com.ironsoftware.ironpdf.PdfDocument i com.ironsoftware.ironpdf.render.ChromePdfRenderOptions do swojej klasy Java, aby uzyskać dostęp do API wypełniania formularzy. Dla wskazówek dotyczących wdrożenia na platformach chmurowych, zobacz przewodniki dla AWS, Azure i Google Cloud.
IronPdf.licenseKey przed pierwszym wywołaniem PdfDocument, aby uniknąć opóźnień w weryfikacji licencji w czasie wykonywania.Jak stworzyć i wypełnić formularz PDF używając HTML w Java?
Najbardziej niezawodny sposób, aby uzyskać spójnie ustrukturyzowany, wypełnialny PDF, to zdefiniowanie formularza w HTML i renderowanie go przy użyciu IronPDF. Biblioteka konwertuje elementy HTML <input> bezpośrednio na interaktywne pola formularzy PDF.
Poniższy kod tworzy formularz PDF z dwoma polami z ciągu HTML, a następnie wypełnia oba pola:
//: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"));
}
}
W pierwszym bloku użyto ChromePdfRenderOptions wraz z setCreatePdfFormsFromHtml(true), aby poinformować silnik renderujący, że ma traktować elementy HTML <input> jako aktywne pola formularza PDF, a nie jako statyczny tekst. Renderowany PDF jest zapisywany jako szablon do ponownego użycia. Drugi blok ładuje ten szablon, wywołuje getForm().setFieldValue() dla każdego pola według nazwy i zapisuje wynik w oddzielnym pliku wyjściowym, pozostawiając oryginalny szablon niezmieniony do wykorzystania w przyszłości.
Jak wygląda wynik?
Pierwszy rendering tworzy PDF z dwoma pustymi polami tekstowymi, w pełni edytowalnymi w dowolnym czytniku PDF.

Po uruchomieniu setFieldValue() oba pola zostaną wypełnione dostarczonymi danymi:

Jak wypełnić istniejący formularz PDF, którego nie stworzyłem?
Wiele rzeczywistych ścieżek pracy otrzymuje zewnętrzne szablony PDF (formularze rządowe, dokumenty ubezpieczeniowe, umowy z dostawcami), które już zawierają nazwane pola. Ładowanie i wypełnianie tych pól odbywa się w ten sam sposób: użyj PdfDocument.fromFile(), aby załadować dokument, a następnie getForm().setFieldValue(), aby ustawić każde pole według jego nazwy.
//: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"));
}
}
Aby odkryć nazwy pól w istniejącym PDF, otwórz dokument w Adobe Acrobat Reader, kliknij prawym przyciskiem myszy na dowolne pole i wybierz "Właściwości". Nazwa pola pojawia się na karcie Ogólne. Alternatywnie, iteruj programowo po wszystkich polach:
//: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());
}
}
}
PRINTowanie nazw pól przed zapisaniem danych zapobiega cichemu niepowodzeniu setFieldValue() w przypadku niezgodności nazw. Nazwy pól w dokumentach PDF rozróżniają wielkość liter, więc "firstname" i "FirstName" są traktowane jako różne pola.
getForm().getFields() w IronPDF zwraca listę obiektów FormField. Każde z nich udostępnia getName(), getType() oraz getValue(). Są one przydatne podczas tworzenia dynamicznych procedur wypełniania formularzy, które odczytują nazwy pól z zewnętrznych źródeł danych, takich jak baza danych lub plik CSV.Jak wypełnić pola wyboru i przyciski radiowe w Java?
Pola tekstowe akceptują bezpośrednio wartości typu string, ale pola wyboru i przyciski opcji wymagają określonych wartości eksportowanych, które plik PDF definiuje w momencie tworzenia. Należy użyć setFieldValue() wraz z prawidłowym ciągiem wartości eksportowanej dla każdego pola.
//: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"));
}
}
Wartość eksportowa pola wyboru to zazwyczaj "Yes", "On" lub niestandardowy ciąg znaków ustawiony przez autora formularza. Dla grup przycisków radiowych każda opcja w grupie dzieli tę samą nazwę pola, ale ma unikalną wartość eksportu. Użyj techniki listowania pól z poprzedniej sekcji, aby potwierdzić dokładne wartości eksportu przed zapisaniem zautomatyzowanych procedur wypełniania.
setFieldValue() nie pojawia się przy zaznaczaniu pola wyboru lub przycisku opcji, prawdopodobnie ciąg wartości eksportu jest nieprawidłowy. Wpisz pole z getFields() i sprawdź getValue() w ręcznie sprawdzonej kopii pliku PDF, aby uzyskać prawidłowy ciąg znaków.Jak wypełnić listy rozwijane w formularzu PDF przy użyciu Java?
Pola list rozwijanych (zwane także polami kombi) używają tego samego API, co pola tekstowe. Przekaż wartość eksportową opcji jako ciąg znaków do setFieldValue(). Wartość eksportu to zazwyczaj widoczny tekst opcji, jeżeli autor formularza nie zdefiniował oddzielnej wartości podstawowej.
//: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"));
}
}
Gdy wartość eksportu z listy rozwijanej różni się od widocznej etykiety, użyj getFields(), aby sprawdzić dostępne opcje pola. Przekazanie wartości, która nie pasuje do żadnej opcji zdefiniowanej w polu, pozostawia wybór niezmieniony bez wyrzucania wyjątku, więc walidacja wartości eksportu przed partią zapisów unika cichej utraty danych.
FormField na FormComboBoxField i wywołaj getOptions(). Zwraca to listę prawidłowych wartości eksportu dla tej listy rozwijanej.Jak spłaszczyć wypełniony formularz PDF w Java?
Spłaszczenie przekształca wszystkie pola formularza w statyczną, niedadetowalną zawartość. To zapobiega zmianie przesłanych danych przez odbiorców i jest wymagane do wielu przypadków użycia archiwizacji i zgodności. IronPDF obsługuje spłaszczanie formularzy jako część swoich możliwości manipulacji 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"));
}
}
Po uruchomieniu flatten() w wyjściowym pliku PDF/A nie pozostają żadne interaktywne pola formularza. Rozmiar dokumentu zazwyczaj zmniejsza się, ponieważ warstwy nakładki pól formularzy są usunięte. Spłaszczone pliki PDF są bezpieczne do dystrybucji bez ryzyka edytowania przesłanych wartości przez odbiorców.
Jakie są kolejne kroki w wypełnianiu formularzy PDF w Java?
IronPDF udostępnia skoncentrowane, mało zbiuroaktywizowane API do wypełniania formularzy PDF w Java. Metoda getForm() zapewnia bezpośredni dostęp do pól tekstowych, pól wyboru, przycisków opcji i list rozwijanych. Gdy wymagane jest archiwizowanie, flatten() blokuje wszystkie wypełnione dane jako treść statyczną.
Dla kolejnych etapów przepływu pracy z dokumentami PDF, zapoznaj się z tymi przewodnikami:
- Tworzenie formularzy PDF z HTML w Java: twórz programowo szablony formularzy
- Konwersja HTML do PDF w Java: renderuj całe strony HTML i fragmenty jako dokumenty PDF
- Bezpieczeństwo PDF i ochrona hasłem: ogranicz dostęp do wypełnionych formularzy przed dystrybucją
- Podpisy cyfrowe dla PDF w Java: podpisz ukończone formularze w celu potwierdzenia autentyczności
- Dokumentacja API Java IronPDF: kompletna dokumentacja klas i metod
Rozpocznij bezpłatny okres próbny IronPDF for Java, aby przetestować wypełnianie formularzy w swoim własnym projekcie. Kiedy będziesz gotowy do wdrożenia, zobacz opcje licencjonowania IronPDF, aby znaleźć plan odpowiedni do potrzeb Twojego zespołu.
Często Zadawane Pytania
Jakie są podstawowe kroki wypełniania formularza PDF w Java?
Dodaj zależność IronPDF Maven, załaduj swój PDF za pomocą PdfDocument.fromFile(), uzyskaj dostęp do pól formularza za pomocą getForm(), wywołaj setFieldValue(fieldName, value) dla każdego pola i zapisz wynik za pomocą saveAs().
Jak odkryć nazwy pól w istniejącym PDF?
Otwórz PDF w Adobe Acrobat Reader, kliknij prawym przyciskiem myszy dowolne pole i wybierz Właściwości. Nazwa pola pojawia się na karcie Ogólne. Alternatywnie, wywołaj getForm().getFields(), aby iterować wszystkie pola i wydrukować każdą z metod getName() i getType() programowo.
Jak wypełnić pola wyboru i przyciski radiowe w Java?
Użyj setFieldValue() z ciągiem eksportowej wartości pola. Wartości eksportowe pól wyboru są zazwyczaj Yes lub On. Dla grup przycisków radiowych, każda opcja dzieli tę samą nazwę pola, ale ma unikalną wartość eksportową. Jeśli pole nie reaguje, sprawdź getValue() na ręcznie zaznaczonej kopii PDF, aby znaleźć poprawny ciąg.
Jak wypełnić pole listy rozwijanej?
Wywołaj setFieldValue(fieldName, optionValue) z eksportową wartością opcji. Wartość eksportowa to zazwyczaj widoczny tekst opcji. Aby programowo wymienić dostępne opcje, rzutuj FormField do FormComboBoxField i wywołaj getOptions().
Czym jest spłaszczanie formularza PDF?
Spłaszczenie konwertuje wszystkie interaktywne pola formularzy na statyczną, nieedytowalną treść. Wywołaj getForm().flatten() przed zapisaniem. Wynikowy PDF nie może być edytowany przez odbiorców, co jest wymagane dla wielu przepływów pracy związanych z archiwizacją i zgodnością.
Czy IronPDF może wypełnić formularze stworzone przez inne narzędzia?
Tak. PdfDocument.fromFile() załadowuje każdy standardowy formularz PDF bez względu na to, jak został utworzony. Użyj getForm().getFields(), aby sprawdzić nazwy pól przed wywołaniem setFieldValue(), ponieważ nazwy pól są rozróżniane dla wielkości liter i różni się w zależności od autora formularza.


