Plain English

A 2D barcode that looks like a tall stack of tiny barcodes — stores up to ~1,800 characters. PDF417 is **tunable**: `security` (0-8), `columns` × `rows`, and `truncate` together set the trade-off between density and damage tolerance. Higher `security` recovers from more damage but enlarges the barcode; tighter `columns` keeps it tall and narrow; truncated mode drops the right-hand row indicators to save space at the cost of error recovery.

When to use

For large data payloads — addresses, detailed product info, regulatory/compliance text. Raise `security` to 6-8 for hazmat/outdoor labels that take a beating; keep `security=2-4` and tighter geometry when label area is precious and the environment is clean. Use truncated mode (`truncate=Y`) only on labels that will not be torn or smudged.

Syntax

^B7o,h,security,columns,rows,truncate

Parameters

ParameterDescription
oRotation: N, R, I, B
hRow height in dots (typically 4-10)
securityError correction level 0-8. Higher = more recoverable but larger. 5 is a balanced general-purpose choice; 6-8 for harsh/outdoor; 0-2 only when label area is severely constrained and the read environment is clean.
columnsData columns 1-30. Lower = taller/narrower; higher = shorter/wider. 3-5 typical for narrow labels, 8-15 for shipping documents.
rowsNumber of rows. 0 = auto-calculate from data length and columns (recommended).
truncate`Y` = truncated PDF417 (no right-hand row indicators — saves space, less robust to damage), `N` = full PDF417 (recommended).

Example

^XA
^FO50,50^B7N,5,5,3,0,N^FDShipper: Acme Corp, 123 Main St, Sydney 2000, AU^FS
^XZ

Balanced PDF417: `security=5` (~25% error correction), `columns=3` (tall and narrow for a shipping label edge), rows auto-calculated, full (non-truncated) format.

Try it in the playground View all ZPL commands