Why 30-Up Avery 5160 Barcode Sheets Drift by 4.2mm (and How We Built a 1:1 PostScript Point Imposition Engine)
Description and use
Solution to vertical drift of 30‑up Avery 5160 barcode sheets: precise geometry calculation, CSS property binding to points, and point‑for‑point PDF export.
Problem
Browser-generated 30‑up Avery 5160 barcode sheets drift vertically, causing barcodes to cross die‑cut lines and fail scanners.
Outcome
Implemented a 1:1 PostScript point imposition engine that eliminates 4.2 mm vertical drift in 30‑up Avery 5160 barcode sheets, ensuring accurate alignment and scanner compatibility.
Workflow
- 1. Define exact die‑line geometry for Avery 5160/8160 (margins, cell size, gutters, pitches).
- 2. Calculate PDF canvas size in PostScript points (612 × 792 pt).
- 3. Detect browser scaling (e.g., 94.5%) and compute drift per row.
- 4. Provide a printable alignment test PDF with crosshairs and a 100 mm ruler for operator verification.
- 5. In the web generator, bind a CSS custom property --pt to the rendered cell’s width divided by physical points wide.
- 6. Express all font sizes, quiet zones, and bar heights as calc(N * var(--pt) * var(--sf)) to match server‑side PDF imposition.
- 7. Validate GS1 check digits using a modulo‑10 algorithm for UPC‑A, EAN‑13, and GTIN‑14.
- 8. Export PDF with point‑for‑point imposition to preserve coordinates.
- 9. Print on Avery 5160/8160 sheets and verify alignment using the test PDF.
Evidence
When Chrome or macOS Preview opens a PDF with Fit to Printable Area enabled, it scales the entire 792 pt canvas down to roughly 94.5% to stay inside a default 0.25 in unprintable printer margin
Row 1 top edge at 100% scale: 12.70 mm Row 10 bottom edge at 100%: 266.70 mm Row 10 bottom edge at 94.5%: 262.45 mm --> 4.25 mm cumulative vertical drift!
Every font size, quiet zone, and bar height inside the preview is then expressed as calc(N * var(--pt) * var(--sf))
- Record date: 2026-11-01T23:28:44.642Z