Capabilities

The boring parts, done right.

The full gPdf capability surface: JSON-native layout, vector barcodes, CJK + Arabic + Devanagari fonts embedded, PDF/A archival profiles, e-invoice attachment streams, and pagination control.

Browse use cases
/01

Built for invoices

$0.00005 per page, p50 3 ms, embedded CJK, PDF/A-3 attachment stream. The four numbers fintech, ERP and tax-compliance teams check first.

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

Built for shipping labels

label_100_150 and label_4_6_in size presets. Vector GS1-128, ITF-14, SSCC at 0.1 mm precision — carriers and 3PLs print at peak without rasterised barcodes.

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

Free visual editor + API

Design PDF templates visually in the free WYSIWYG editor at https://studio.gpdf.com, then generate the same DocumentRequest JSON through the API. No separate design format, no handoff drift.

// Studio and API share the same JSON
https://studio.gpdf.com
POST /api/v1/pdf/render
Open Studio
/04

JSON-native layout

Define pages, coordinates, elements, styles, headers, footers, backgrounds, watermarks, and stamps directly in JSON. Coordinates in millimetres, not approximations.

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

Tables that paginate

row_span across pages, repeat headers, alternate_fill, compound double borders. The 1% that always breaks.

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

Vector barcodes

30+ symbologies incl. Code 128, QR, DataMatrix, PDF417, GS1-128. All vector. Overall barcode length accurate to 0.1 mm.

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

PDF/A + e-invoice output

Create PDF/A profiles and PDF/A-3b e-invoice packages with embedded CII XML for Factur-X / ZUGFeRD workflows. One field enables the PDF/A-3b packaging path.

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

Typography + CJK fallback

Automatic fallback and strict font modes prevent silent missing-glyph output across Latin, CJK, RTL Arabic, Indic, and emoji-heavy documents.

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

Password + permission locks

AES-128 or AES-256 document encryption plus 8 permission locks (print, modify, copy, annotate, forms — and more). Pro: open-password output. Enterprise: owner password + per-permission control.

Print · Modify · Copy · Fill forms — see all 8 locks
  • Print
  • Modify content
  • Copy / extract text and graphics
  • Annotate / modify form fields
  • Fill in existing forms
  • Extract for accessibility
  • Assemble (insert / rotate / delete pages, bookmarks)
  • Print at high quality
// inside settings
"security": {
  "open_password": "reader-demo",
  "owner_password": "owner-demo",
  "algorithm": "aes_128",
  "permissions": {
    "print": true,
    "modify": false,
    "copy": false
  }
}
settings.security reference
/10

Variables + pagination

{page} / {total_pages} resolved post-layout. keep_together, widow/orphan, page_break blocks.

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