Coste
Corre en Cloudflare Workers — no un contenedor Chromium de 800 MB facturado a $0,40/hora sin hacer nada. $0,00005 por página. Sin mínimos, sin coste por puesto, sin recargos por entorno.
100 mil páginas por 5 USD. PDFs generados en el edge en pocos milisegundos
Diseñada para escala global Totalmente compatible con PDF/A, Factur-X y ZUGFeRD
Edita el DocumentRequest a la izquierda. Llama al worker edge en vivo: esquema real, PDF real, normalmente <5 ms.
Corre en Cloudflare Workers — no un contenedor Chromium de 800 MB facturado a $0,40/hora sin hacer nada. $0,00005 por página. Sin mínimos, sin coste por puesto, sin recargos por entorno.
Perfiles de archivado PDF/A (1b, 2b, 3b, 4) bajo demanda. Factur-X, ZUGFeRD y EN 16931 soportados nativamente — Sección 5 de la referencia API, no un enlace en la hoja de ruta.
pages[], elements[], x/y en milímetros. Sin HTML→PDF, sin Chrome headless, sin DSL de plantillas que aprender. El mismo JSON alimenta la API y el editor visual — diseñadores y desarrolladores editan un único archivo.
Latín, CJK, árabe (RTL + ligaduras complejas), devanagari, cirílico, bengalí y thai integrados en el motor — más 3000+ emojis en color. Sin `apt install fonts-noto-cjk`. Nunca un glifo perdido.
Semántica de documento real, no capturas de navegador en un wrapper PDF.
x/y en milímetros, x_anchor para alineación al borde derecho, posicionamiento submilimétrico en etiquetas. Coordenadas, no aproximaciones.
// inside elements[i]
"x_anchor": {
"reference": "content_right",
"offset": 6
} 30+ simbologías incl. GS1-128, QR, PDF417, DataMatrix. Todas vectoriales. Longitud total precisa a 0,1 mm.
// 30+ formats: code128, qrcode, datamatrix, pdf417, ...
"type": "barcode",
"format": "code128",
"content": "INV-2026-001" Why vector beats raster font_mode: strict (la familia declarada debe cubrir todos los glifos), prefer (recurre a las familias integradas), auto (lo elige el motor). Agotamiento de auto/prefer devuelve API-504 — fallo explícito, no silencioso.
// inside style{}
"font_family": "NotoSans-Regular",
"font_mode": "prefer" settings.profile = "pdfa-3b" activa la conformidad PDF/A-3b y el flujo de adjuntos XML incrustado que Factur-X / ZUGFeRD requieren. Un campo, un documento conforme.
// top-level on DocumentRequest
"settings": {
"profile": "pdfa-3b"
} PDF/A and Factur-X, explained {page} / {total_pages} resueltos post-layout. keep_together, widow/orphan, bloques page_break.
// element of type "variable"
{ "type": "variable",
"name": "page",
"scope": "system" } row_span entre páginas, encabezados repetidos, alternate_fill, bordes dobles compuestos. El 1 % que siempre se rompe.
// inside table element
"pagination": {
"keep_spans_together": true
} El mismo JSON DocumentRequest impulsa POST /api/v1/pdf/render y el editor visual en editor.gpdf.com. Edita visualmente, entrega vía API, o escribe a mano — los tres flujos round-trippan el mismo archivo.
// 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 por página, p50 3 ms, CJK embebido, flujo de adjunto PDF/A-3. Los cuatro números que los equipos fintech, ERP y compliance fiscal verifican primero.
// invoice — header + table pattern
{ "size": "a4",
"elements": [
{ "type": "text", "x": 18, "y": 22, ... },
{ "type": "table", "x": 18, "y": 60, ... }
]} Why JSON beats HTML→PDF Presets de tamaño label_100_150 y label_4_6_in. GS1-128, ITF-14, SSCC vectoriales con precisión de 0,1 mm — transportistas y 3PL imprimen en pico sin códigos de barras rasterizados.
// 4×6 thermal shipping label
{ "size": "label_4_6_in",
"elements": [{
"type": "barcode",
"format": "code128",
"content": "1Z999AA10123456784" }]} Shipping-label use case Factura A4 de una página, 12 líneas, QR + logo. Mediana de 1000 generaciones de PDF. Más bajo es mejor.
Methodology: 1-page A4 invoice · 12 line items · 1 QR + 1 logo · 1K invocations · median (p50) and p99 reported. Sampled 2026-04-29 from a workstation in EU-WEST. PDFShift, DocRaptor, Puppeteer and LaTeX numbers are reproduced from each vendor's published quickstart sample with the same input — re-run on your own workload before deciding. Read the head-to-head comparisons →
Sin per-seat. Sin per-environment. Sin gatekeeping por nivel de soporte.
Todos los niveles de pago incluyen las mismas
Para equipos regulados, despliegues en nube privada/VPC y entornos de intranet aislados. Ejecuta gPdf como despliegue dedicado en Worker, servidor o detrás de un gateway; los controles de red, requisitos de región, términos del DPA y escalado de soporte se definen por proyecto.
Doce respuestas — citadas textualmente por el JSON-LD FAQPage que consumen los Google rich results.
El p50 es de 3 ms y el p99 de 8 ms en una sola página A4 medido sobre 1000 invocaciones. El tiempo total en el edge, incluyendo la red, suele ser de 8 a 15 ms.
Un cuerpo DocumentRequest en JSON. Páginas, elementos, capas, marcas de agua, encabezados, pies y tablas se expresan estructuralmente — sin HTML, sin Markdown, sin paso de layout del navegador.
Chromium headless funciona a 200-800 ms por renderizado y necesita un contenedor de 800 MB. gPdf renderiza la misma página A4 en 3 ms dentro de un isolate V8 de 1 MB, sin arranque en frío. La compensación es el formato de entrada: gPdf toma un DocumentRequest JSON, no HTML crudo.
Tres: /api/v1/pdf/render toma un DocumentRequest completo para control a nivel de píxel. /api/v1/template-render toma template_id más un array de datos para sistemas con un template publicado. /api/v1/e-invoice/render produce facturas híbridas Factur-X / ZUGFeRD (PDF/A-3 + XML embebido). Los tres comparten el mismo motor, los mismos límites de velocidad y la misma superficie de códigos de error.
No. NotoSans CJK está embebido y una cadena de fallback automático maneja los glifos faltantes. Nunca verás cuadros tofu y no necesitas apt install fonts-noto-cjk en tu runtime.
Más de 30 simbologías incluyendo QR, GS1-128, PDF417, DataMatrix, Aztec, MaxiCode y Code 128. Todas vectoriales. La longitud total del código de barras está dentro de 0,1 mm del tamaño solicitado — suficientemente preciso para anchos de etiqueta GS1 e ITF-14.
Sí. PDF/A-1b, 2b, 3b y 4 son seleccionables por solicitud. Los flujos de adjuntos Factur-X y ZUGFeRD son compatibles para escenarios de factura electrónica.
Sí. Configura settings.profile en pdfa-3b y adjunta el payload XML estructurado como flujo de archivo. Factur-X y ZUGFeRD se basan en PDF/A-3 — requerido para el mandato alemán de e-facturación ya en vigor, y el mandato francés B2B desde septiembre de 2026.
Dentro de isolates V8 de Cloudflare Workers. No hay contenedor Chromium, ni calentamiento de Lambda, ni persistencia de documento después de la solicitud.
No. El renderizador es sin estado. Tu DocumentRequest vive en un isolate V8 durante los pocos milisegundos del renderizado, luego desaparece. gPdf no tiene capa de caché ni almacenamiento de documentos — la ausencia de estado es el contrato, no una opción.
Sí. La prueba gratuita ofrece 100 páginas por día, sin tarjeta de crédito. Se reinicia diariamente y se detiene en el cuota — sin facturas sorpresa. Los niveles de pago comienzan en $5 al mes por 100.000 páginas.
Abre el playground arriba, edita el DocumentRequest y pulsa Generar PDF — el worker en vivo del edge devuelve un PDF real. Copia el snippet curl en tu terminal para llamarlo desde cualquier sitio. El playground no requiere instalación ni tarjeta de crédito; sólo se necesita una cuenta para emitir tu propia API key.
Un marco de decisión neutral para elegir una API de generación de PDF. Ocho preguntas que predicen si seguirás satisfecho dentro de 12 meses.
DocRaptor usa Prince para convertir HTML a PDF en un backend alojado. gPdf renderiza JSON estructurado directamente en el edge de Cloudflare. La diferencia de precio es 18×. Aquí el porqué no es un anzuelo.
Qué restringen realmente los perfiles PDF/A, por qué Factur-X / Facturae son obligatorios en España desde 2026, y el pipeline más pequeño práctico para emitir desde un renderizador JSON.
Ingeniería auditable más el papeleo — ambos registros, ambos verificables.
Opciones de residencia en UE, US, APAC y SA. Los requisitos de región se definen por contrato.
Sin persistencia de documentos. No hay capa de caché ni almacenamiento de documentos en el producto.
Competidores nombrados, metodología completa, fecha de muestreo. Cada benchmark de esta página es reproducible — vuelve a ejecutarlo en tu propia carga antes de decidir.
Misma entrada → PDF byte-idéntico. Diffeable. Testable en CI sin deriva de snapshot.