Variable data printing (VDP)¶
Merge records from a data file into a page design — personalised cards, numbered tickets, address labels, certificates. Design the template once, connect the data, and Generate produces a copy of the template for every record — single page or a multi-page set.
What you'll make¶
A print-ready document where every record of your data becomes its own copy of the template: variable text, per-record images, serial numbers, ticked or unticked boxes.
Before you start¶
- A template — any PDF page (or several). Add the variable elements with the Editor tools: text, frame text, image, checkbox. Only Imposio elements can be mapped — the underlying PDF artwork stays as it is.
- A data file — CSV, Excel (XLSX), ODS, TXT or JSON; the first row usually holds the column names. Pure numbering jobs need no file at all — a counter is enough.
Step by step¶
- Open the template and switch to the Variable Data ribbon tab.
- In the panel on the right, add the data file (several files can be combined — appended as more records, or side by side as more columns).
- Under Mapping, every element on the source pages gets a row. Type a template with
{column}placeholders — typing{pops up autocomplete, and the ▾ button inserts columns, counters and checkbox state values. - Pick the Output mode: a new document, pages appended to this document, or filling existing pages.
- Generate.
Placeholders¶
| Syntax | Meaning |
|---|---|
{name} |
Value of the column name for the current record. |
{i}, {i:03} |
Counter value; :03 pads with zeros (001, 002, …). |
{={price} * 1.21} |
Expression — JavaScript with placeholders inside; numeric results (decimal comma too) are inserted as numbers. |
{{ |
A literal {. |
Counters are defined in the panel (start value, step, optional maximum) and work even with no data file — the maximum then sets the number of records.
What each element type does¶
- Text / frame text — the expanded template replaces the element's text.
- Image — the template expands to a file path (
photos/{code}.png); fit mode and alignment are set per mapping. - Checkbox — the expanded template decides the state:
1/yes/trueticks, empty /0/nounticks.{={i} % 2}ticks every other record. - Form fields — interactive PDF (AcroForm) fields get their own template rows; they are filled in and flattened for every record, with the same truthy/falsy rules for check boxes.
Visibility¶
The Visibility list below Mapping shows every element on the source pages plus PDF page content as one item. Unchecked items are left out of the generated output — e.g. keep a scanned envelope in the template just for positioning, and print only the elements onto blank envelopes.
Multi-page templates¶
Set several source pages and each record produces the whole set — a four-page template yields a four-page section per record, ready for booklet or section imposition.
Presets¶
Save the whole setup (data files, counters, mappings, output) as a named preset and re-apply it with one click — same as imposition presets. With automatic presets (Settings → Variable Data, on by default), the setup is saved on Generate and loaded back automatically when you return to the document with its data files still in place.
Tips¶
- Static (unmapped) design elements are baked once and shared by all records — a 500-record merge stays about the size of the design.
- The generated document is a normal PDF: impose it straight away — N-up for tickets and labels, Booklet/Section for multi-page sets.
- The whole merge is scriptable (
imposio.loadData,doc.mergeData), and Generate Script writes the complete script for the current setup.
Troubleshooting¶
- An element has no mapping row? Only Imposio elements (Editor tab) can be mapped — plain PDF content can't. Place a text/image/checkbox element over the artwork.
- Wrong number of records? Check the Records range in Output and any counter maximum — both limit the merge.
- Element missing from the output? Check the Visibility list — unchecked items are skipped.
Need a hand with a data-merge job? Ask the Imposio Community.