विशेषताएँ

बुनियादी लेकिन अहम हिस्से, सही तरीके से।

PDF wrapper में browser screenshots नहीं, बल्कि वास्तविक document semantics।

Browse use cases
/01

पिक्सेल-स्तरीय नियंत्रण

x/y मिलीमीटर में, दाएँ-किनारे संरेखण के लिए x_anchor, लेबल पर सब-मिलीमीटर स्थानन। निर्देशांक, अनुमान नहीं।

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

Vector barcodes

GS1-128, QR, PDF417, DataMatrix सहित 30+ symbologies। सभी vector। कुल barcode length 0.1 mm तक accurate।

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

फ़ॉन्ट फॉलबैक चेन

font_mode: strict (घोषित परिवार सभी glyphs कवर करे), prefer (बंडल किए गए परिवारों पर fallback), auto (इंजन चुनता है)। auto/prefer समाप्त होने पर API-504 — fail-loud, चुप नहीं।

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

अनुपालन मोड

settings.profile = "pdfa-3b" PDF/A-3b अनुपालन और Factur-X / ZUGFeRD के लिए आवश्यक एम्बेडेड XML अटैचमेंट stream दोनों चालू करता है। एक field, एक अनुपालन दस्तावेज़।

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

चर + pagination

{page} / {total_pages} layout के बाद resolved। keep_together, widow/orphan और page_break blocks।

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

Tables जो pagination करते हैं

Pages के पार row_span, repeat headers, alternate_fill, compound double borders। वही 1% जो हमेशा टूटता है।

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

एक JSON, दो सतह

वही DocumentRequest JSON POST /api/v1/pdf/render और editor.gpdf.com पर visual editor दोनों चलाता है। visually edit करें, 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

Invoices के लिए बनाया गया

$0.00005 प्रति page, p50 3 ms, embedded CJK, PDF/A-3 attachment stream। Fintech, ERP और tax-compliance teams जिन चार numbers को पहले check करती हैं।

// 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

Shipping labels के लिए बनाया गया

label_100_150 और label_4_6_in size presets। Vector GS1-128, ITF-14, SSCC 0.1 mm precision पर — carriers और 3PLs peak पर rasterised barcodes के बिना print करते हैं।

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