Jak Wypełnić Pola Formularza PDF w Node.js
Programowe wypełnianie formularzy PDF w Node.js pozwala zautomatyzować przepływy dokumentów: od uzupełniania formularzy aplikacyjnych danymi z bazy, po generowanie spersonalizowanych certyfikatów na dużą skalę. IronPDF dla Node.js zapewnia prosty API do ładowania istniejących PDFów, zapisywania wartości w polach formularzy oraz zapisywania ukończonych dokumentów bez opuszczania środowiska JavaScript.
Ten przewodnik obejmuje pełny przepływ pracy: instalację pakietu, zastosowanie klucza licencyjnego, wypełnianie pól tekstowych, pól wyboru, rozwijanych list i przycisków radiowych, spłaszczanie pól formularzy, aby zablokować wartości, i zapisywanie wyniku. Wszystkie przykłady kodu używają await i pakietu @ironsoftware/ironpdf.
Szybki start: Wypełnianie formularza PDF w Node.js
Zainstaluj pakiet, a następnie załaduj i wypełnij formularz w kilku liniach:
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install.sh
npm install @ironsoftware/ironpdf//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install.sh
npm install @ironsoftware/ironpdf:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/quickstart.jsconst { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
IronPdfGlobalConfig.getConfig().licenseKey = "YOUR-LICENSE-KEY-HERE";
(async () => {
const pdf = await PdfDocument.fromFile("./form.pdf");
await pdf.setFormFieldValue("firstName", "Jane");
await pdf.setFormFieldValue("email", "jane@example.com");
await pdf.saveAs("./filled-form.pdf");
})();
Minimalny proces (5 kroków)
1. Zainstalować IronPDF: `npm install @ironsoftware/ironpdf` 2. Ustawić klucz licencji za pomocą `IronPdfGlobalConfig.getConfig().licenseKey` 3. Załadować istniejący PDF za pomocą `PdfDocument.fromFile(path)` 4. Ustawić wartość każdego pola za pomocą `await pdf.setFormFieldValue(fieldName, value)` 5. Zapisz wynik za pomocą `await pdf.saveAs(outputPath)`Jakie są Wymagania do Wypełniania Formularzy PDF w Node.js?
Przed uruchomieniem poniższych przykładów kodu potwierdź, że są spełnione trzy rzeczy: obsługiwana wersja Node.js, klucz licencji IronPDF i plik binarny IronPdfEngine.
Wersja Node.js: IronPDF wymaga Node.js 18 lub nowszej. Pobierz aktualne wydanie LTS z oficjalnej strony internetowej Node.js. Biblioteka używa asynchronicznego I/O Node.js dla wszystkich operacji PDF, więc await lub łańcuch obietnic jest standardowym wzorcem w całym zakresie. Starsze wersje Node.js nie są obsługiwane, ponieważ pakiet zależy od funkcji natywnego ESM i async_hooks, które wymagają Node.js 18+.
Klucz licencyjny: Aktywny klucz licencyjny IronPDF odblokowuje pełny API. Rozpocznij bezpłatny okres próbny, aby uzyskać klucz na potrzeby rozwoju i testowania, lub kup licencję do użytku produkcyjnego. Dla opcji wdrożeniowych (zmienne środowiskowe, pliki konfiguracyjne, menedżery tajemnic) zobacz Korzystanie z Kluczy Licencyjnych.
IronPdfEngine: Pakiet Node.js zawiera IronPdfEngine, wieloplatformowy silnik renderowania, który obsługuje rzeczywistą manipulację PDF. Ustawienia i uwagi specyficzne dla platformy (Windows, Linux, macOS) znajdują się w dokumentacji Użyj IronPdfEngine.
Jak Ustawić Klucz Licencyjny w Kodzie Node.js?
Zastosować klucz licencji raz na starcie aplikacji, przed jakimikolwiek wywołaniami PdfDocument.
:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/license-setup.jsconst { IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
// Apply once at startup -- before any PdfDocument operations
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
Przechowywanie klucza w zmiennej środowiskowej (jak pokazano wyżej z process.env.IRONPDF_LICENSE_KEY) utrzymuje dane uwierzytelniające poza kontrolą wersji. Przegląd rozpoczęcia pracy obejmuje dodatkowe wzorce inicjalizacji dla różnych środowisk wdrożeniowych.
Jak zainstalować IronPDF for Node.js?
Instalacja IronPDF dla Node.js wymaga pojedynczej komendy npm. Uruchom ją w katalogu swojego projektu:
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install-full.sh
npm install @ironsoftware/ironpdf//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/install-full.sh
npm install @ironsoftware/ironpdfPakiet zawiera deklaracje typów TypeScript, więc projekty TypeScript otrzymują pełne wsparcie IntelliSense bez oddzielnego pakietu @types. Pliki binarne specyficzne dla platformy dla Windows, Linux i macOS są pobierane automatycznie podczas instalacji. Pakiet @Iron Software/ironpdf na npm listuje wszystkie opublikowane wersje i zależności koleżeńskie.
.d.ts oznaczają, że IntelliSense działa od razu w VS Code i innych edytorach, które obsługują usługi językowe TypeScript.Dla instrukcji jak dodać IronPDF do istniejącego monorepo lub workflowu opartego na Dockerze, zobacz dokumentację IronPDF dla Node.js.
Jak wypełnić formularze PDF programowo?
Ładowanie PDF i wpisywanie wartości do jego pól wymaga trzech asynchronicznych wywołań: PdfDocument.fromFile(), setFormFieldValue(), i saveAs(). Poniższy przykład wypełnia formularz aplikacji wielopolowej i opcjonalnie go spłaszcza, aby wartości nie mogły zostać zmienione po dostarczeniu.
Jak Wygląda Kompletny Przykład Wypełniania Formularzy?
Poniższy przykład ładuje PDF z kilkoma typami pól, wypełnia je i zapisuje wynik. Dla skupionego spojrzenia na tworzenie formularzy zamiast ich wypełniania, zobacz stronę przykładów PDF Forms.
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/fill-pdf-form.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
async function fillApplicationForm() {
// Load the PDF containing form fields
const pdf = await PdfDocument.fromFile("./forms/application-form.pdf");
// Discover available field names before filling
const fieldNames = await pdf.getFormFieldNames();
console.log("Form fields:", fieldNames);
// Text fields
await pdf.setFormFieldValue("firstName", "Jane");
await pdf.setFormFieldValue("lastName", "Doe");
await pdf.setFormFieldValue("email", "jane.doe@example.com");
await pdf.setFormFieldValue("phone", "+1-555-987-6543");
// Date field
await pdf.setFormFieldValue("dateOfBirth", "03/22/1988");
// Pole wyboru fields -- pass "true" or "false" as strings
await pdf.setFormFieldValue("agreeToTerms", "true");
await pdf.setFormFieldValue("subscribeNewsletter", "false");
// Dropdown / select field
await pdf.setFormFieldValue("country", "United States");
// Multi-line text area
await pdf.setFormFieldValue("comments", "Application submitted via automated workflow.");
// Flatten the form to lock values -- prevents further editing
// await pdf.flattenAllFormFields();
await pdf.saveAs("./output/filled-application.pdf");
console.log("Form saved.");
}
fillApplicationForm().catch(console.error);//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/fill-pdf-form.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
async function fillApplicationForm() {
// Load the PDF containing form fields
const pdf = await PdfDocument.fromFile("./forms/application-form.pdf");
// Discover available field names before filling
const fieldNames = await pdf.getFormFieldNames();
console.log("Form fields:", fieldNames);
// Text fields
await pdf.setFormFieldValue("firstName", "Jane");
await pdf.setFormFieldValue("lastName", "Doe");
await pdf.setFormFieldValue("email", "jane.doe@example.com");
await pdf.setFormFieldValue("phone", "+1-555-987-6543");
// Date field
await pdf.setFormFieldValue("dateOfBirth", "03/22/1988");
// Pole wyboru fields -- pass "true" or "false" as strings
await pdf.setFormFieldValue("agreeToTerms", "true");
await pdf.setFormFieldValue("subscribeNewsletter", "false");
// Dropdown / select field
await pdf.setFormFieldValue("country", "United States");
// Multi-line text area
await pdf.setFormFieldValue("comments", "Application submitted via automated workflow.");
// Flatten the form to lock values -- prevents further editing
// await pdf.flattenAllFormFields();
await pdf.saveAs("./output/filled-application.pdf");
console.log("Form saved.");
}
fillApplicationForm().catch(console.error);Po wywołaniu getFormFieldNames(), zwrócona tablica informuje, które nazwy pól użył autor PDF. Jest to najszybszy sposób, aby uniknąć literówek w nazwach pól podczas integracji z formularzami, które nie stworzyłeś.
getFormFieldNames() raz podczas tworzenia, aby wydrukować dokładne nazwy pól w twoim PDF. Hardkodowanie złej nazwy jest najczęstszą przyczyną pustych pól po setFormFieldValue().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 Obsługiwać Różne Typy Pól Formularza?
IronPDF obsługuje standardowe typy pól AcroForm: pola tekstowe, przyciski wyboru, rozwijane listy, listy i pola do podpisu. Metoda setFormFieldValue() akceptuje wartości tekstowe dla wszystkich typów; dla pól poczyw mych i radio, akceptowane wartości zależą od określenia pola w PDF.
Poniższa tabela pokazuje format wartości dla każdego typu pola:
| Typ pola | Format wartości | Przykład |
|---|---|---|
| Tekst / Wieloliniowy | Dowolny ciąg | "Jane Doe" |
| Pole wyboru | "true" lub "false" | "true" |
| Przycisk radiowy | Wartość eksportowa opcji | "Kobieta" |
| Rozwijana lista (Combo) | Tekst wyświetlany opcji | "Stany Zjednoczone" |
| Pole wyboru (wielokrotny wybór) | Tablica ciągów | ["Opcja1", "Opcja2"] |
| Data / numeryczne | Reprezentacja tekstowa | "15.06.2024" |
Jak działają pola wyboru i przyciski radiowe?
Pola wyboru akceptują "true" do zaznaczenia i "false" do odznaczenia. Przyciski radiowe akceptują wartość eksportową opcji do zaznaczenia -- eksportowany ciąg jest zazwyczaj widoczny w właściwościach pola PDF i różni się od etykiety wyświetlania.
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/field-types.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
async function handleFieldTypes() {
const pdf = await PdfDocument.fromFile("./forms/complex-form.pdf");
// Radio button -- use the field's export value, not its display label
await pdf.setFormFieldValue("gender", "Female");
// Pole wyboru
await pdf.setFormFieldValue("termsAccepted", "true");
// Dropdown
await pdf.setFormFieldValue("preferredContact", "Email");
// Numeric field -- pass the number as a string
await pdf.setFormFieldValue("invoiceAmount", "1250.00");
// Date picker
await pdf.setFormFieldValue("appointmentDate", "2024-06-15");
await pdf.saveAs("./output/complex-form-filled.pdf");
}
handleFieldTypes().catch(console.error);//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/field-types.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
async function handleFieldTypes() {
const pdf = await PdfDocument.fromFile("./forms/complex-form.pdf");
// Radio button -- use the field's export value, not its display label
await pdf.setFormFieldValue("gender", "Female");
// Pole wyboru
await pdf.setFormFieldValue("termsAccepted", "true");
// Dropdown
await pdf.setFormFieldValue("preferredContact", "Email");
// Numeric field -- pass the number as a string
await pdf.setFormFieldValue("invoiceAmount", "1250.00");
// Date picker
await pdf.setFormFieldValue("appointmentDate", "2024-06-15");
await pdf.saveAs("./output/complex-form-filled.pdf");
}
handleFieldTypes().catch(console.error);Pola listy wielokrotnego wyboru podążają za tym samym wzorcem. Gdy pole pozwala na wiele wyborów, przekaż tablicę ciągów zamiast pojedynczej wartości. Pola podpisu mogą przyjmować ciąg obrazu kodowanego w base64, reprezentujący grafikę podpisu.
setFormFieldValue() nie wydaje się zmieniać wartości pola, sprawdź, czy nazwa pola jest dokładnym dopasowaniem — nazwy pól w PDF są czułe na wielkość liter. Użyj getFormFieldNames(), aby wyświetlić rzeczywiste nazwy w dokumencie.Jak zlikwidować pola formularza PDF po ich wypełnieniu?
Likwidacja formularza PDF łączy wszystkie wartości pól z treścią statyczną strony, usuwając warstwę interaktywną. Wynikowy dokument nie może być dalej edytowany, co zapobiega przypadkowym zmianom podczas dystrybucji i zapewnia spójne renderowanie we wszystkich przeglądarkach PDF.
Wywołać flattenAllFormFields() na załadowanym dokumencie po ustawieniu wszystkich wartości pól, a przed zapisaniem.
//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/flatten-form.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
async function fillAndFlattenForm() {
const pdf = await PdfDocument.fromFile("./forms/contract.pdf");
// Fill the required fields
await pdf.setFormFieldValue("signerName", "Jane Doe");
await pdf.setFormFieldValue("signatureDate", "2024-06-15");
await pdf.setFormFieldValue("agreementAccepted", "true");
// Flatten -- converts interactive fields to static content
await pdf.flattenAllFormFields();
await pdf.saveAs("./output/contract-signed.pdf");
console.log("Contract flattened and saved.");
}
fillAndFlattenForm().catch(console.error);//:path=/static-assets/pdf/content-code-examples/nodejs/how-to/nodejs-fill-pdf-form/flatten-form.js
const { PdfDocument, IronPdfGlobalConfig } = require("@ironsoftware/ironpdf");
IronPdfGlobalConfig.getConfig().licenseKey = process.env.IRONPDF_LICENSE_KEY;
async function fillAndFlattenForm() {
const pdf = await PdfDocument.fromFile("./forms/contract.pdf");
// Fill the required fields
await pdf.setFormFieldValue("signerName", "Jane Doe");
await pdf.setFormFieldValue("signatureDate", "2024-06-15");
await pdf.setFormFieldValue("agreementAccepted", "true");
// Flatten -- converts interactive fields to static content
await pdf.flattenAllFormFields();
await pdf.saveAs("./output/contract-signed.pdf");
console.log("Contract flattened and saved.");
}
fillAndFlattenForm().catch(console.error);Likwidacja jest odpowiednia dla ostatecznych dostaw -- umów po podpisaniu, certyfikatów po wydaniu lub faktur po zatwierdzeniu. Dla dokumentów, które wymagają dalszego przeglądu przed finalizacją, pominąć flattenAllFormFields() i zapisać bez niego.
Jakie są powszechne przypadki użycia automatyzacji formularzy PDF?
Automatyczne wypełnianie formularzy usuwa ręczne wprowadzanie danych z wysokowydajnych przepływów dokumentów. W poniższych scenariuszach omówiono najczęstsze wzorce wdrażane przez programistów z IronPDF.
Przetwarzanie aplikacji: Pobierz dane wnioskodawcy z bazy danych lub API REST i wypełnij formularze PDF dla usług finansowych, ubezpieczeniowych lub procesów przyjmowania w instytucjach rządowych. Połącz wypełnione formularze za pomocą przykładu Łączenie PDF, aby stworzyć jeden wielostronicowy pakiet zgłoszeniowy.
Generowanie faktur i paragonów: Wypełnij szablony faktur danymi z pozycji, danymi klienta i obliczonymi sumami. Dodaj nagłówki i stopki stron za pomocą technik pokazanych w przykładzie HTML Nagłówki i Stopki.
Generowanie certyfikatów i poświadczeń: Personalizuj szablony certyfikatów z nazwiskami odbiorców, datami ukończenia i tytułami kursów. Dodaj zabezpieczenie za pomocą przykładu Podpisy Cyfrowe, aby zapobiec manipulacji po wydaniu. Standard PDF/A jest często wymagany do długoterminowej archiwizacji certyfikatów w przemysłach regulowanych.
Generowanie raportów: Wypełniaj szablony raportów danymi analitycznymi lub wynikami ankiet. W przypadkach, gdy potrzebujesz zbudować układ PDF od podstaw, zamiast wypełniać istniejący formularz, zobacz samouczek HTML do PDF.
Jakie są kolejne kroki w wypełnianiu formularzy PDF w Node.js?
Ten przewodnik pokazał ładowanie PDF, wypełnianie pól tekstowych, pól wyboru, list rozwijanych i przycisków radiowych, likwidację formularza w celu zablokowania wartości i zapisanie ukończonego dokumentu. Ta sama instancja PdfDocument obsługuje dalsze operacje — dodawanie podpisów cyfrowych, kompresowanie wyniku lub wydobywanie tekstu — bez ponownego ładowania pliku.
Rozpocznij bezpłatny okres próbny, aby przetestować IronPDF w swoim projekcie lub zobacz opcje licencjonowania, aby znaleźć plan, który pasuje do Twojego wdrożenia.
Gotowy, aby sprawdzić, co jeszcze możesz zrobić? Sprawdź pełną kolekcję samouczków Node.js tutaj: HTML to PDF in Node.js
Często Zadawane Pytania
Jakie warunki muszę spełnić, aby wypełniać formularze PDF w Node.js?
Potrzebujesz Node.js 18 lub wyżej, klucza licencyjnego IronPDF (dostępna jest bezpłatna wersja próbna) oraz pliku binarnego IronPdfEngine. Silnik jest dołączony do pakietu @ironsoftware/ironpdf i pobierany automatycznie podczas instalacji.
Jak zainstalować IronPDF for Node.js?
Uruchom npm install @ironsoftware/ironpdf w katalogu projektu. Komenda instaluje pakiet i jego specyficzne platformowe pliki binarne dla Windows, Linux i macOS. Deklaracje typów TypeScript są dołączone.
Jak odkryć nazwy pól w formularzu PDF?
Wywołaj await pdf.getFormFieldNames() po załadowaniu PDF za pomocą PdfDocument.fromFile(). Metoda zwraca tablicę wszystkich nazw pól w dokumencie. Nazwy pól PDF są rozróżniane wielkością liter, więc używaj dokładnie tych ciągów, które są zwracane.
Jaki format wartości akceptują pola wyboru i przyciski radiowe?
Pola wyboru akceptują ciąg znaków "true", aby zaznaczyć, i "false", aby odznaczyć. Przyciski radiowe akceptują wartość eksportową docelowej opcji jako ciąg tekstowy. Użyj getFormFieldNames() i sprawdź właściwości pól PDF, aby znaleźć poprawną wartość eksportową.
Jak zapobiec edytowaniu wypełnionego formularza PDF?
Wywołaj await pdf.flattenAllFormFields() po ustawieniu wszystkich wartości pól, a przed saveAs(). Spłaszczanie łączy wartości pól w treści statycznej strony usuwając interaktywną warstwę formularza. Operacja jest nieodwracalna w zapisanym pliku.
Czy mogę używać IronPDF dla Node.js razem z TypeScript?
Tak. Pakiet @ironsoftware/ironpdf zawiera deklaracje TypeScript (.d.ts pliki), dzięki czemu uzyskasz pełne sprawdzanie typów i IntelliSense w VS Code oraz innych edytorach, bez potrzeby instalowania oddzielnego pakietu typów.





