Fill existing PDF form text fields from CSV rows. Match CSV columns to existing AcroForm text fields and download a ZIP containing one filled PDF for each row.
You need many copies of the same fillable PDF, such as certificates, labels or letters, each with different values from a spreadsheet you can save as CSV.

Buy and extract the NornaForms ZIP, then open its NornaForms folder. Open app/index.html in desktop Google Chrome. The same workflow can be explored in the online browser preview.
In your open local copy, follow the controls described below. The page has five numbered panels.
In 1 Form template, click Choose a PDF and select your form. NornaForms lists its text fields; the file itself is never modified.
In 2 CSV data, click Choose a CSV. The Delimiter is detected automatically; you can also pick comma, semicolon, tab or pipe.
In 3 Mapping, click Auto-map by name to connect columns and fields with the same name, or pick a CSV column for each PDF field. Export mapping (.json) saves the mapping for next time; Import mapping loads it.
In 4 Preview & checks, set the Output filename template, for example certificate-{{participant_name}}. Placeholders are {{Column name}}, {{#row}}, {{#rownum}}, {{#index}} and {{#total}}; .pdf is added for you. Click Check all rows and fix anything marked as blocking, such as text that will not fit, duplicate file names, missing values or missing characters.
In 5 Generate, choose the options: Flatten copies, Automatically de-duplicate identical filenames, Generate even when text is predicted to overflow, and Include _nornaforms-report.csv in the ZIP (ticked by default). Changing an option means running Check all rows again. Click Generate ZIP.
Open the ZIP and check a few PDFs in the reader you will use.
Input: examples/nornaforms/workshop-certificate-form.pdf, a fictional form with four text fields (participant_name, workshop, date, hours), and examples/nornaforms/participants.csv, three fictional participants under the same column names.
Expected: NornaForms accepts the form (“4 text fields on 1 pages”) and the CSV (“3 rows, 4 columns”), maps 4 of 4 fields and reports “Checks finished: all 3 row(s) pass, 3 warning(s)”. The warnings only say that spaces in file names became “_”. The browser downloads workshop-certificate-form-3-copies.zip containing certificate-Ada_Example.pdf, certificate-Bruno_Sample.pdf, certificate-Chen_Placeholder.pdf and _nornaforms-report.csv. Each PDF's fields hold that participant's values.
NornaForms needs a PDF that already has fillable text fields; it does not create fields or read scans. XFA, encrypted, signed and JavaScript-carrying PDFs are rejected with the reason shown.
Click Check all rows after every change to the mapping, file name template or options, and fix all blocking problems.
Shorten the value, or tick Generate even when text is predicted to overflow and inspect those copies. The prediction is a measurement, not a rendering in your reader.
Only text fields are filled. Check boxes, dropdowns and buttons are left untouched.
Nothing is kept after you close or reload the page. Use Export mapping (.json) and load it next time with Import mapping.
Guide and examples: 30 September 2026. Examples are fictional or synthetic. Online guide · Support