Tres pasos. Un PDF.
El proceso completo cabe en una pantalla. Sin curva de aprendizaje, sin SDK propietario. Si sabes HTML y puedes hacer un POST, ya sabes usar DocLayer.
1. Diseña tu plantilla en HTML
Tu plantilla es HTML estándar — el mismo que usarías para una página web. La diferencia: donde quieres que entre data dinámica, escribes una variable entre dobles llaves.
Soportamos paths anidados con / como separador. Ejemplo: {{empresa/nombre}} entra a empresa.nombre del payload, {{cotizacion/items[0]/precio}} entra al precio del primer item de cotizacion.items.
El editor del portal te da preview en vivo, click-to-insert de variables detectadas, atajos de teclado (⌘S guardar, ⌘P alternar vista, Esc volver) y plantillas pre-hechas para empezar (cotización, factura CFDI, recibo, constancia).
2. Manda tus datos por API
Un POST a /api/documentos con tu data en JSON o XML, autenticado con header X-API-Key. Funciona desde cualquier lenguaje que pueda hacer una llamada HTTP — curl, Python, Node, .NET, Go.
Soporta hasta 512 KB por payload, lo que cubre la mayoría de documentos transaccionales (cotizaciones grandes, facturas con cientos de partidas, reportes con tablas dinámicas).
Idempotencia opcional con request_hash: si tu backend tiene retries automáticos y mandas el mismo hash dos veces, devolvemos el documento_id original en lugar de duplicar y consumir cupo.
3. Recibe el PDF binario
La response es directamente application/pdf — bytes binarios listos para guardar en disco, retornar como descarga al usuario, o forwardear a otro servicio. No hay paso intermedio de generar URLs ni esperar webhooks.
Render con Chromium headless en menos de 2 segundos para documentos típicos. Cache automático: descargar el mismo documento dos veces no re-renderiza, lee del filesystem.
Headers extra para que monitorees consumo: X-Document-Id (id en tu histórico), X-Usage-Count (cuántos PDFs llevas este ciclo), X-Usage-Limit (cupo total).
Detalles técnicos que puedes ignorar (pero te van a importar después)
Engine
Chromium headless via Playwright .NET. Soporta CSS3 moderno, fuentes web (incluido @import), SVG inline, custom properties, flexbox y grid. No soporta JavaScript en el render (todo es estático).
Tamaño de página
Por default A4 vertical. Podés cambiar con @page CSS en tu plantilla (size: letter; margin: 1cm) para ajustar a otros formatos.
Concurrencia
Hasta 3 renders simultáneos por instancia. Si saturás la cola, devolvemos 503 con Retry-After: 30. En la práctica esto solo aparece con bursts grandes (>100 PDFs/seg).
Storage
Los PDFs se cachean en filesystem local del servidor (Hetzner Frankfurt) bajo /var/lib/doclayer/pdfs/{empresa}/{doc}.pdf. Sirviéndolos sin re-renderizar en descargas posteriores. No se eliminan automáticamente.
Listo para tu primer PDF.
100 documentos gratis al mes, para siempre. Sin tarjeta de crédito.