ความสามารถ

รายละเอียดพื้นฐานแต่สำคัญ ทำให้ถูกต้อง

semantics เอกสารจริง ไม่ใช่ screenshots ของ browser ใน wrapper PDF

Browse use cases
/01

ควบคุมระดับพิกเซล

x/y เป็นมิลลิเมตร, x_anchor สำหรับจัดชิดขวา, การวางตำแหน่งระดับซับมิลลิเมตรบนฉลาก เป็นพิกัด ไม่ใช่ค่าประมาณ

// inside elements[i]
"x_anchor": {
  "reference": "content_right",
  "offset": 6
}
/02

Vector barcodes

30+ symbologies รวม GS1-128, QR, PDF417, DataMatrix ทั้งหมดเป็น vector ความยาว barcode โดยรวมแม่นยำถึง 0.1 mm

// 30+ formats: code128, qrcode, datamatrix, pdf417, ...
"type": "barcode",
"format": "code128",
"content": "INV-2026-001"
Why vector beats raster
/03

ลำดับสำรองฟอนต์

font_mode: strict (ฟอนต์ที่ประกาศต้องคลุมทุก glyph), prefer (สำรองผ่านฟอนต์ในชุด), auto (เอนจิ้นเลือกเอง) auto/prefer หมดทางเลือกจะคืน API-504 — fail แบบโจ่งแจ้ง ไม่เงียบ

// inside style{}
"font_family": "NotoSans-Regular",
"font_mode": "prefer"
/04

โหมดการปฏิบัติตาม

settings.profile = "pdfa-3b" เปิดทั้งการปฏิบัติตาม PDF/A-3b และ stream แนบ XML ฝังตัวที่ Factur-X / ZUGFeRD ต้องการ ฟิลด์เดียว เอกสารเดียวที่ปฏิบัติตามครบ

// top-level on DocumentRequest
"settings": {
  "profile": "pdfa-3b"
}
PDF/A and Factur-X, explained
/05

ตัวแปร + การแบ่งหน้า

{page} / {total_pages} resolve หลัง layout รองรับ keep_together, widow/orphan และ page_break blocks

// element of type "variable"
{ "type": "variable",
  "name": "page",
  "scope": "system" }
/06

ตารางที่แบ่งหน้า

row_span ข้ามหน้า repeat headers, alternate_fill, compound double borders ส่วน 1% ที่มักพังเสมอ

// inside table element
"pagination": {
  "keep_spans_together": true
}
/07

JSON เดียว สองอินเตอร์เฟซ

JSON DocumentRequest ชุดเดียวกันขับเคลื่อนทั้ง POST /api/v1/pdf/render และ visual editor ที่ editor.gpdf.com แก้ไขแบบ visual, ส่งผ่าน 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
/08

สร้างสำหรับใบแจ้งหนี้

$0.00005 ต่อ page, p50 3 ms, embedded CJK, PDF/A-3 attachment stream สี่ตัวเลขแรกที่ fintech, ERP และ tax-compliance teams ตรวจ

// invoice — header + table pattern
{ "size": "a4",
  "elements": [
    { "type": "text",  "x": 18, "y": 22, ... },
    { "type": "table", "x": 18, "y": 60, ... }
  ]}
Why JSON beats HTML→PDF
/09

สร้างสำหรับฉลากจัดส่ง

size presets label_100_150 และ label_4_6_in Vector GS1-128, ITF-14, SSCC ที่ precision 0.1 mm — carriers และ 3PLs print ช่วง peak โดยไม่ต้องใช้ rasterised barcodes

// 4×6 thermal shipping label
{ "size": "label_4_6_in",
  "elements": [{
    "type": "barcode",
    "format": "code128",
    "content": "1Z999AA10123456784" }]}
Shipping-label use case