Контроль до пикселя
x/y в миллиметрах, x_anchor для выравнивания по правому краю, субмиллиметровое размещение на этикетках. Координаты, а не приближения.
// inside elements[i]
"x_anchor": {
"reference": "content_right",
"offset": 6
} Реальная семантика документа, а не скриншоты браузера в обёртке PDF.
x/y в миллиметрах, x_anchor для выравнивания по правому краю, субмиллиметровое размещение на этикетках. Координаты, а не приближения.
// inside elements[i]
"x_anchor": {
"reference": "content_right",
"offset": 6
} 30+ символик включая GS1-128, QR, PDF417, DataMatrix. Все векторные. Общая длина точна до 0,1 мм.
// 30+ formats: code128, qrcode, datamatrix, pdf417, ...
"type": "barcode",
"format": "code128",
"content": "INV-2026-001" Why vector beats raster font_mode: strict (заявленное семейство должно покрыть все глифы), prefer (фолбэк по встроенным семействам), auto (движок выбирает). Исчерпание auto/prefer возвращает API-504 — явный отказ, не молчаливый.
// inside style{}
"font_family": "NotoSans-Regular",
"font_mode": "prefer" settings.profile = "pdfa-3b" включает соответствие PDF/A-3b плюс встроенный поток XML-вложения, которого требуют Factur-X / ZUGFeRD. Одно поле — один соответствующий документ.
// top-level on DocumentRequest
"settings": {
"profile": "pdfa-3b"
} PDF/A and Factur-X, explained {page} / {total_pages} разрешаются после layout. keep_together, widow/orphan, блоки page_break.
// element of type "variable"
{ "type": "variable",
"name": "page",
"scope": "system" } row_span между страницами, повторяющиеся заголовки, alternate_fill, составные двойные границы. Тот 1 %, который всегда ломается.
// inside table element
"pagination": {
"keep_spans_together": true
} Тот же DocumentRequest JSON приводит в действие POST /api/v1/pdf/render и визуальный редактор на editor.gpdf.com. Правьте визуально, отправляйте через API или пишите вручную — все три маршрута round-trip один файл.
// three routes, one engine
POST /api/v1/pdf/render
POST /api/v1/template-render
POST /api/v1/e-invoice/render Read the API reference $0,00005 за страницу, p50 3 мс, встроенный CJK, поток вложений PDF/A-3. Четыре числа, которые fintech, ERP и налоговые команды проверяют первыми.
// invoice — header + table pattern
{ "size": "a4",
"elements": [
{ "type": "text", "x": 18, "y": 22, ... },
{ "type": "table", "x": 18, "y": 60, ... }
]} Why JSON beats HTML→PDF Пресеты размеров label_100_150 и label_4_6_in. Векторные GS1-128, ITF-14, SSCC с точностью 0,1 мм — перевозчики и 3PL печатают на пике без растеризованных штрих-кодов.
// 4×6 thermal shipping label
{ "size": "label_4_6_in",
"elements": [{
"type": "barcode",
"format": "code128",
"content": "1Z999AA10123456784" }]} Shipping-label use case