Jak wypełnić formularz PDF w Java (Poradnik)
IronPDF umożliwia programistom Java programowe wypełnianie formularzy PDF poprzez ładowanie istniejących plików PDF, uzyskiwanie dostępu do pól formularza z getForm(), ustawianie wartości z setFieldValue() i 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 poniższy blok zależności do pliku `pom.xml`, aby zainstalować IronPDF dla Java.
Otwórz `pom.xml` i wstaw zależność wewnątrz elementu `<dependencies>`, 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 w swojej klasie 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ń weryfikacji licencji w czasie wykonania.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"));
}
}
Pierwszy blok używa ChromePdfRenderOptions z setCreatePdfFormsFromHtml(true), aby powiedzieć silnikowi renderującemu, aby traktował elementy HTML <input> jako aktywne pola formularzy PDF zamiast 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 po nazwie i zapisuje wynik do oddzielnego pliku wyjściowego, pozostawiając oryginalny szablon nienaruszony do przyszłego użytku.
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 są wypełniane 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 formularzy następuje tak samo: użyj PdfDocument.fromFile(), aby załadować dokument, a potem getForm().setFieldValue(), aby ustawić każde pole po jego nazwie.
//: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());
}
}
}
Drukowanie nazw pól przed zapisaniem danych zapobiega setFieldValue() cichym niepowodzeniom na niezgodną nazwę. Nazwy pól w dokumentach PDF są czułe na wielkość liter, więc "firstname" i "FirstName" są traktowane jako różne pola.
getForm().getFields() w IronPDF zwraca listę obiektów FormField. Każdy z nich udostępnia getName(), getType(), i 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.IronSuite odgrywa kluczową rolę w naszej działalności. Są to narzędzia zwiększające wydajność w całej firmie, w tym tworzenie planów pięter i poprawa zarządzania zapasami.
Jak wypełnić pola wyboru i przyciski radiowe w Java?
Pola tekstowe akceptują wartości ciągów, ale pola wyboru i przyciski radiowe wymagają określonych wartości eksportowanych, które PDF definiuje na etapie tworzenia dokumentu. Użyj setFieldValue() z poprawną wartością eksportową ciągu znaków 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 dla pola wyboru to zazwyczaj "Yes", "On", lub niestandardowy ciąg 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 pokazuje zaznaczenia pola wyboru lub przycisku radiowego, prawdopodobnie jest to błędna wartość eksportowa ciągu. Lista pola za pomocą getFields() i skontroluj getValue() na ręcznie zaznaczonej kopii PDF, aby uzyskać poprawny 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"));
}
}
Kiedy wartość eksportowa listy rozwijanej różni się od widocznej etykiety, użyj getFields(), aby skontrolować 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 nie pozostają żadne interaktywne pola formularzy. 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() daje bezpośredni dostęp do pól tekstowych, pól wyboru, przycisków radiowych i list rozwijanych. Kiedy wymagana jest archiwizacja, flatten() blokuje wszystkie wypełnione dane jako statyczną treść.
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.


