Jak tworzyć formularze PDF w Javie
IronPDF dla Java umożliwia programistom tworzenie dynamicznych, interaktywnych formularzy PDF — pól tekstowych, pól wyboru, pól kombi, i przycisków radiowych — poprzez konwersję HTML do PDF. Podejście HTML z pierwszeństwem daje pełną kontrolę nad układem formy i zachowaniem, używając standardowych technologii webowych, bez potrzeby nauki proprietarnego API formularza. Po zrozumieniu, jak IronPDF modeluje pola formularza, można także wypełniać istniejące formularze PDF programowo.
Tradycyjne biblioteki PDF Java wymagają tworzenia pól formularza za pomocą obiektów PDF na poziomie niskim. IronPDF obrał inny kierunek: napisz formularz w HTML i CSS, a następnie renderuj go do PDF, który zachowuje każde interaktywne pole. Wynik jest kompatybilny z Adobe Acrobat Reader i wszystkimi głównymi przeglądarkami PDF.
Szybki start: Utwórz Formularz PDF w Java
- Dodaj IronPDF dla Java do swojego projektu za pośrednictwem Maven Central
- Ustaw swój klucz licencyjny za pomocą
License.setLicenseKey() - Napisz ciąg HTML zawierający standardowe elementy formularza (
<input>,<textarea>,<select>) - Wywołaj
PdfDocument.renderHtmlAsPdf(), aby przekonwertować HTML na PDF - Zapisz powstały dokument z
saveAs()
//:path=/static-assets/ironpdf-java/howto/create-forms/quickstart-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
// Set license key before any rendering call
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// HTML form with a text field and submit button
String formHtml = "<h2>Registration Form</h2>" +
"<form>" +
"<label>Name: <input type='text' name='fullname' placeholder='Enter name'></label><br>" +
"<button type='submit'>Submit</button>" +
"</form>";
// Render HTML to PDF — form fields are preserved
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(formHtml);
pdf.saveAs("registration-form.pdf");
//:path=/static-assets/ironpdf-java/howto/create-forms/quickstart-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
// Set license key before any rendering call
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// HTML form with a text field and submit button
String formHtml = "<h2>Registration Form</h2>" +
"<form>" +
"<label>Name: <input type='text' name='fullname' placeholder='Enter name'></label><br>" +
"<button type='submit'>Submit</button>" +
"</form>";
// Render HTML to PDF — form fields are preserved
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(formHtml);
pdf.saveAs("registration-form.pdf");
Jak tworzyć formularze PDF w Javie
- Zainstaluj bibliotekę Java do tworzenia formularzy PDF
- Utwórz łańcuch HTML zawierający pola formularza
- Użyj metody
renderHtmlAsPdfdo konwersji łańcucha HTML na PDF - Eksportuj dokument PDF
- Użyj różnych obsługiwanych typów pól formularza
Jak tworzyć formularze w Javie?
IronPDF tworzy formularze PDF z HTML, traktując specyfikację formularzy W3C HTML jako źródło prawdy. Każdy standardowy element formularza — <input>, <textarea>, <select>, <checkbox> i <radio> — jest zachowany w pliku PDF jako pole interaktywne. Możesz stylizować te elementy za pomocą CSS i używać niestandardowych czcionek, aby dopasować się do wymagań marki.
Tworząc formularze, IronPDF zachowuje interaktywną naturę elementów formularza HTML w rezultującym PDF. Użytkownicy mogą wypełniać formularze bezpośrednio w przeglądarce PDF bez dodatkowego oprogramowania. Formularze działają z Adobe Acrobat Reader i wszystkimi powszechnie używanymi przeglądarkami PDF, co sprawia, że są dostępne w środowiskach korporacyjnych i konsumenckich. Dla zaawansowanych opcji renderowania, zobacz dokumentację ustawień generowania PDF.
IronPDF nie wymaga działającej przeglądarki ani zainstalowanego sterownika drukowania PDF. Silnik renderujący jest dołączony do biblioteki, dzięki czemu formularze są renderowane identycznie na komputerach deweloperskich, serwerach CI i wdrożeniach w chmurze.
Jak tworzyć pola tekstowe i formularze TextArea?
Pola tekstowe i obszary tekstowe są najczęstszymi elementami formularzy PDF — użyteczne do zbierania nazw, adresów e-mail, komentarzy i wieloliniowych opisów. IronPDF mapuje <input type="text"> na jednowierszowe pola tekstowe w pliku PDF, a <textarea> na wielowierszowe pola, które zachowują swoje wymiary wierszy i kolumn.
Elementy formularza HTML zachowują swoją funkcjonalność po konwersji na PDF. Użytkownicy mogą klikać w pola, wpisywać tekst i poruszać się między polami za pomocą klawisza Tab, tak jak w dowolnym formularzu web. Podczas konwersji zachowane zostaną wartości domyślne, tekst zastępczy oraz atrybuty walidacji HTML5, takie jak required i pattern. Dla precyzyjnej kontroli układu, łącz elementy formularza z niestandardowymi rozmiarami papieru i ustawieniami marginesów.
//:path=/static-assets/ironpdf-java/howto/create-forms/text-input-textarea-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// HTML with single-line inputs and a multi-line textarea
String htmlContent = """
<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=''> <br>
Address: <br> <textarea name='address' rows='4' cols='50'></textarea>
</form>
</body>
</html>
""";
// Render HTML — both <input> and <textarea> become interactive PDF fields
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);
// Save the document
pdfDoc.saveAs("textAreaAndInputForm.pdf");
//:path=/static-assets/ironpdf-java/howto/create-forms/text-input-textarea-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// HTML with single-line inputs and a multi-line textarea
String htmlContent = """
<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=''> <br>
Address: <br> <textarea name='address' rows='4' cols='50'></textarea>
</form>
</body>
</html>
""";
// Render HTML — both <input> and <textarea> become interactive PDF fields
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);
// Save the document
pdfDoc.saveAs("textAreaAndInputForm.pdf");
Wywołanie renderHtmlAsPdf w klasie PdfDocument konwertuje kod HTML na w pełni interaktywny plik PDF. Każde nazwane pole formularza staje się odrębnym polem w słowniku AcroForm PDF, możliwym do odczytania przez każdą przeglądarkę PDF zgodną ze standardami. Nazwy pól ustawione w atrybucie name (firstname, lastname, address) są zachowane w wynikach i można je odczytać podczas późniejszego pobierania danych z formularza.
Dokument wyjściowy w formacie PDF:
Jak utworzyć formularze z polami wyboru i listami rozwijanymi?
Pola wyboru i listy rozwijane obejmują dwa najpopularniejsze wzorce wyboru w formularzach PDF: wybory binarne (włączone/wyłączone) oraz wybór pojedynczego elementu z listy. IronPDF mapuje <input type="checkbox"> na pola wyboru w PDF, a elementy <select> na pola listy rozwijanej (rozwijane) w PDF.
Pola typu combobox pozwalają użytkownikom wybierać spośród stałej listy opcji zdefiniowanych przez elementy <option>. Możesz wstępnie wybrać domyślną opcję, dodając atrybut selected do opcji, pogrupować powiązane wybory za pomocą <optgroup> oraz użyć CSS, aby dopasować wygląd listy rozwijanej do projektu dokumentu. Atrybut name w elemencie <select> staje się nazwą pola w wynikowym pliku PDF, co ułatwia wyodrębnianie danych z formularza. Zobacz projekt Apache PDFBox dla szczegółów na temat tego, jak pola AcroForm PDF przechowują te dane wyboru, jeśli potrzebujesz przetwarzać formularze przy użyciu innych narzędzi.
//:path=/static-assets/ironpdf-java/howto/create-forms/checkbox-combobox-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// HTML with a checkbox and a select dropdown
String htmlContent = """
<html>
<body>
<h2>Editable PDF Form</h2>
<h3>Task Completed</h3>
<label>
<input type='checkbox' id='taskCompleted' name='taskCompleted'> Mark task as completed
</label>
<h3>Select Priority</h3>
<label for='priority'>Choose priority level:</label>
<select id='priority' name='priority'>
<option value='high'>High</option>
<option value='medium' selected>Medium</option>
<option value='low'>Low</option>
</select>
</body>
</html>
""";
// Render HTML — checkbox and combobox fields are preserved in the PDF
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);
// Save the document
pdfDoc.saveAs("checkboxAndComboboxForm.pdf");
//:path=/static-assets/ironpdf-java/howto/create-forms/checkbox-combobox-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// HTML with a checkbox and a select dropdown
String htmlContent = """
<html>
<body>
<h2>Editable PDF Form</h2>
<h3>Task Completed</h3>
<label>
<input type='checkbox' id='taskCompleted' name='taskCompleted'> Mark task as completed
</label>
<h3>Select Priority</h3>
<label for='priority'>Choose priority level:</label>
<select id='priority' name='priority'>
<option value='high'>High</option>
<option value='medium' selected>Medium</option>
<option value='low'>Low</option>
</select>
</body>
</html>
""";
// Render HTML — checkbox and combobox fields are preserved in the PDF
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);
// Save the document
pdfDoc.saveAs("checkboxAndComboboxForm.pdf");
Pole wyboru przechowuje stan logiczny (/On lub /Off w notacji PDF), który kod niższego poziomu może odczytać podczas przetwarzania przesłanych formularzy. Pole kombi przechowuje atrybut value wybranego <option>. Oba typy pól pozostają interaktywne w zapisanym PDF — użytkownicy mogą zaznaczać pole lub zmieniać wybór na liście rozwijanej bez potrzeby dodatkowych wtyczek czy JavaScript.
Dokument wyjściowy w formacie PDF:
Jak tworzyć formularze z przyciskami opcji?
Przyciski radiowe oferują wybór wzajemnie wyłączny: gdy użytkownik zaznaczy jedną opcję w grupie, każda wcześniej zaznaczona opcja jest automatycznie odznaczana. IronPDF mapuje elementy <input type="radio">, które mają wspólny atrybut name, na pojedyncze zgrupowane pole wyboru w słowniku AcroForm pliku PDF.
Wszystkie przyciski opcji w grupie muszą mieć tę samą wartość atrybutu name — to właśnie łączy je w pliku PDF. Atrybut value każdego przycisku określa, co pole przechowuje po wybraniu tej opcji. Jeśli żaden przycisk w grupie nie jest zaznaczony, wartość pola to None. Możesz odczytać bieżący wybór za pomocą metod getForm() i getFields() na załadowanym PdfDocument, co pozwala tworzyć przepływy pracy, które wstępnie wypełniają formularze lub weryfikują przesłane dane. Dla przykładu działania z czytaniem pól formularzy, zobacz przykład danych formularza PDF.
//:path=/static-assets/ironpdf-java/howto/create-forms/radio-button-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// HTML with a radio button group — all three share name='traveltype'
String htmlContent = """
<html>
<body>
<h2>Editable PDF Form</h2>
Choose your preferred travel type: <br>
<input type='radio' name='traveltype' value='Bike'> Bike <br>
<input type='radio' name='traveltype' value='Car'> Car <br>
<input type='radio' name='traveltype' value='Airplane'> Airplane
</body>
</html>
""";
// Render HTML — all three radio inputs become one grouped field in the PDF
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);
// Save the document
pdfDoc.saveAs("radioButtonForm.pdf");
//:path=/static-assets/ironpdf-java/howto/create-forms/radio-button-form.java
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
// Set the license key for IronPDF
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// HTML with a radio button group — all three share name='traveltype'
String htmlContent = """
<html>
<body>
<h2>Editable PDF Form</h2>
Choose your preferred travel type: <br>
<input type='radio' name='traveltype' value='Bike'> Bike <br>
<input type='radio' name='traveltype' value='Car'> Car <br>
<input type='radio' name='traveltype' value='Airplane'> Airplane
</body>
</html>
""";
// Render HTML — all three radio inputs become one grouped field in the PDF
PdfDocument pdfDoc = PdfDocument.renderHtmlAsPdf(htmlContent);
// Save the document
pdfDoc.saveAs("radioButtonForm.pdf");
Ponieważ trzy elementy <input type="radio"> mają wspólny atrybut name="traveltype", IronPDF tworzy w wyjściowym pliku PDF jedną grupę przycisków opcji AcroForm. Na przykład wybranie opcji "Samochód" w programie Acrobat Reader powoduje ustawienie wartości pola na Car i wyczyści wszelkie wcześniejsze zaznaczenia. To zachowanie odpowiada oczekiwaniom użytkowników wobec grup przycisków radiowych w formularzach web, czyniąc przejście z web do zbierania danych PDF naturalnym.
Nazwy grup przycisków radiowych muszą być unikalne w całym formularzu. Ponowne użycie tej samej nazwy w różnych grupach logicznych powoduje ich połączenie w jedno pole, co uniemożliwia niezależny wybór.
Jak zastosować najlepsze praktyki tworzenia formularzy PDF?
Niezawodne formularze PDF wymagają uwagi zarówno pod względem konfiguracji renderowania, jak i długoterminowej konserwacji. Najczęstszym problemem jest formularz, który wygląda poprawnie w przeglądarce, ale traci interaktywność po konwersji — zazwyczaj jest to spowodowane brakiem atrybutów name w elementach formularza. Zawsze przypisuj name do każdego pola; IronPDF używa tej wartości jako identyfikatora pola PDF, a pola bez nazw mogą zostać pominięte lub połączone.
Testuj formularze w różnych przeglądarkach PDF przed dystrybucją. Adobe Acrobat Reader jest referencyjną implementacją, ale wiele środowisk korporacyjnych używa Foxit Reader lub przeglądarek opartych na przeglądarce, które obsługują przypadki krawędziowe nieco inaczej. Należy używać atrybutów walidacji HTML5 (required, minlength, pattern), które IronPDF uwzględnia podczas renderowania, aby wykrywać problemy z jakością danych już podczas wypełniania formularza, a nie w backendzie. Dla dokumentów wrażliwych zastosuj hasła i ustawienia zabezpieczeń, aby chronić formularz przed nieautoryzowanymi edycjami.
Przy wdrażaniu do produkcji ustaw swój klucz licencyjny przed pierwszym wywołaniem renderowania i trzymaj go w bezpiecznym magazynie konfiguracji, zamiast w kodzie źródłowym. IronPDF publikuje przewodniki wdrożeniowe dla środowisk AWS, Azure i Google Cloud. Zapoznaj się z przewodnikiem po kluczach licencyjnych dla szczegółów na temat zachowania kluczy testowych i produkcyjnych.
Trzymaj nazwy pól formularzy krótkie i alfanumeryczne. Niektórzy czytniki PDF skracają lub odrzucają nazwy pól zawierające spacje lub znaki specjalne, co może powodować błędy w ekstrakcji danych formularza.
Jakie są kolejne kroki w tworzeniu formularzy PDF w Java?
Ten przewodnik pokrył cztery główne typy pól formularzy interaktywnych — pola tekstowe, obszary tekstowe, pola wyboru, pola kombinowane oraz przyciski radiowe — i pokazał, jak IronPDF konwertuje standardowy znacznik formularza HTML na w pełni interaktywne PDF. Każdy typ pola mapuje się bezpośrednio na swoje HTML-owe odpowiedniki, tak aby istniejące szablony formularzy web mogły być wykorzystywane przy minimalnych modyfikacjach.
Od tego momentu, rozważ zbadanie:
- Odczyt i przetwarzanie danych z formularzy: Użyj
getForm()igetFields(), aby wyodrębnić przesłane wartości z wypełnionego pliku PDF. Przykład danych formularza pokazuje pełen przepływ wstecznego odczytu. - Wypełniaj formularze programowo: Połącz tworzenie formularza z przewodnikiem wypełniania formularzy PDF, aby generować dokumenty wstępnie wypełnione dla każdego odbiorcy.
- Zabezpieczaj swoje formularze: Dodaj ochronę hasłem i ogranicz edycję za pomocą przykładu ustawień zabezpieczeń i metadanych.
- Zaawansowane renderowanie: Kontroluj rozmiar papieru, marginesy, nagłówki i stopki za pomocą przewodnika ustawień generowania PDF.
Rozpocznij darmowy okres próbny, aby przetestować tworzenie formularzy bez płatnej licencji. Gdy Twój projekt będzie gotowy do produkcji, zapoznaj się z opcjami licencyjnymi dla planu, który pasuje do Twojego wdrożenia.
Gotowy, aby zobaczyć, co jeszcze potrafi IronPDF? Sprawdź pełny samouczek od HTML do PDF tutaj: Konwersja HTML do PDF w Java
Często Zadawane Pytania
Jak najlatwiej tworzyc formularze PDF w Javie?
IronPDF dla Java tworzy formularze PDF z standardowego HTML. Napisz ciąg HTML z elementami , lub , przekaż go do PdfDocument.renderHtmlAsPdf() i zapisz wynik. Każde nazwane pole staje się interaktywnym polem AcroForm w końcowym PDF.
Jakie typy pól formularzy obsługuje IronPDF w Java?
IronPDF mapuje wszystkie standardowe elementy formularza HTML na ich odpowiedniki PDF: staje się jednolinijkowym polem tekstowym, staje się wieloliniowym polem tekstowym, staje się polem wyboru, staje się polem kombi, a zgrupowane przez ten sam atrybut name staje się zgrupowaniem przycisków radiowych.
Czy muszę miec Adobe Acrobat, aby tworzyc wypelnialne PDFy w Javie?
Nie. IronPDF zawiera własny silnik renderowania, więc nie jest wymagana żadna desktopowa aplikacja PDF. Formularze PDF, które produkuje, są kompatybilne z Adobe Acrobat Reader, Foxit Reader i wszystkimi głównymi przeglądarkami PDF.
Czy mogę stylizować formularze PDF za pomocą CSS w Java?
Tak. Ponieważ IronPDF renderuje HTML na PDF, możesz stosować CSS, aby kontrolować rozmiar pola, czcionkę, kolor i układ. Niestandardowe czcionki sieciowe, ładowane przez tag w twoim HTML, również są osadzane w wyjściowym PDF.
Jak działają grupy przycisków radiowych w IronPDF dla Java?
Wszystkie elementy dzielące ten sam atrybut name są grupowane w jedno pole radiowe AcroForm. Wybranie jednej opcji odznacza pozostałe. Jeśli żadna opcja nie jest wybrana, wartość pola to None. Odczytaj wartość za pomocą getForm().getFields() na załadowanym PdfDocument.
Czy mogę odczytać dane z formularzy utworzonych za pomocą IronPDF?
Tak. Załaduj wypełniony PDF z PdfDocument.fromFile(), a następnie wywołaj getForm().getFields(), aby przeiterować przez wszystkie pola formularzu AcroForm i odczytać ich aktualne wartości. Nazwy pól odpowiadają atrybutom name, które ustawiłeś w swoim oryginalnym HTMLu.


