Für Entwickler

Das Rendern läuft über die API. Das ist keine Einschränkung, das ist das Konzept.

Jemand anderes hat das Template gebaut. Sie schicken JSON an einen Endpoint und bekommen ein Render-Ergebnis zurück — den Status je Dokument, einen signierten Download-Link und die PDF-Bytes selbst, wenn Sie danach fragen — synchron für ein einzelnes Dokument oder als eingereihter Job mit signiertem Webhook für einen Stapel. Sechs native SDKs stehen bereit, dazu eine schlichte REST-API.

Dokumentation lesen →

Schnellstart

Ihr erstes PDF in wenigen Zeilen

Alle SDKs folgen derselben Form, das Beispiel unten ist also die komplette Integration in jedem davon. Wählen Sie Ihren Stack:

Typisierte Clients, idiomatisch in jeder Sprache
Lesezugriffe wiederholen mit Backoff; Schreibzugriffe rendern nie doppelt
Template-Version pro Aufruf festgelegt, damit die Ausgabe nicht abdriftet
C#POST /v1/render/{templateId}
var pagr = new PagrClient(
    Environment.GetEnvironmentVariable("PAGR_KEY"));

var result = await pagr.RenderAsync(templateId, new[] {
    new {
        customer = "Acme Inc.",
        total = 1240.00m,
        lines = order.Lines
    }
});
// result.Status, result.Documents[0].ViewUrl

Die Übergabe

Sie bekommen die vollständige Markdown-Spezifikation zum Template

Jedes gebundene Feld, sein Typ, ob es immer erforderlich oder bedingt ist, ein Beispielwert und die Formatierung, die das Template anwendet — alles ist aufgeführt. Geben Sie es Ihrem KI-Assistenten für das Daten-Mapping, oder lesen Sie es einfach und sind in zehn Minuten fertig.

epc-certificate-v1-data-model.mdaus dem Template generiert
# epc certificate — data model  ·  v1 (draft)

## Root object

| Field               | Type   | Required    | Example      |
|---------------------|--------|-------------|--------------|
| `certificateNumber` | string | Always      | "20240117-1" |
| `postalCode`        | string | Always      | "9000"       |
| `buildingPhoto`     | image  | Always      | "https://…"  |
| `energyScore`       | number | Always      | 148          |
| `expiryDate`        | date   | Always      | "2035-01-17" |
| `remarks`           | string | Conditional | null         |

`energyScore` prints as "148 kWh/m²", `expiryDate` as
"17 January 2035" — send raw values, the template formats.

… 4 more fields omitted.

Aus dem Template generiert, nicht aus dem Gedächtnis

Es wird aus dem Template ausgelesen, das rendert, kann also nicht veralten. Ändert sich das Dokument, erzeugen Sie die Spezifikation neu und stellen sie neben die vorherige, um genau zu sehen, welche Felder sich verschoben haben.

Pflicht oder bedingt, ausdrücklich angegeben

„Immer“ heißt, das Feld ist außerhalb jeder Bedingung gebunden. „Bedingt“ heißt, es steht in einem bedingten Element oder einem ternären Zweig und darf berechtigterweise fehlen.

Rohwerte senden

Eine Zahl ist eine Zahl und ein Datum ist ein ISO-Datum. Das Template besitzt die Formatierung, Sie bauen also auf Ihrer Seite keine Strings zusammen.

Bilder per URL

Schicken Sie für Fotos und Logos eine URL. Barcodes und QR-Codes schicken Sie gar nicht — das Template erzeugt sie aus dem Wert in Ihrem JSON.

SDKs

Sechs Clients, ein Verhalten

Jedes SDK ist so geschrieben, dass es sich in seiner Sprache native anfühlt, und wird auf gleichem Stand gehalten. Jedes liegt auf GitHub — wählen Sie eine Sprache, um sein Repository zu öffnen.

Massengenerierung

Volumen läuft über Code, nicht über die Oberfläche

Massenrendering heißt JSON an die API — ein documents-Array in einem Aufruf oder ein asynchroner Job über eine größere Menge. Das ist die Variante von Masse, die sich auch dann noch benimmt, wenn um 2 Uhr nachts ein Datensatz fehlerhaft ist.

SYNC

Ein Dokument, sofort

Rufen Sie render auf, und das Ergebnis steht in derselben Antwort: Status, Seitenzahl und ein signierter Download-Link, mit den PDF-Bytes darin, wenn Sie danach fragen. Für den Request-Pfad: Ein Nutzer klickt auf „Rechnung herunterladen“, und das Dokument kommt an.

ASYNC

Abschicken und vergessen, im großen Stil

Job einreihen und weitermachen. Ist er fertig, erhalten Sie einen signierten Webhook mit Zeitstempel — HMAC-SHA256, rotationsfähig — statt einer Antwort, der Sie vertrauen sollen.

STREAM

Direkt zum Nutzer

Fordern Sie das rohe PDF an und rendern Sie ohne Persistenz: Die Bytes gehen direkt in Ihre Antwort. Nichts aufzuräumen, nichts, was in einem Bucket darauf wartet, eine Compliance-Frage zu werden.

Hinweis

Pagr stellt Dokumente nicht zu. Die Generierung endet mit der Übergabe des PDFs — der Versand an einen Kunden, ein Portal oder ein Archiv bleibt in Ihrem System, wo der Audit-Trail ohnehin schon liegt. Die Speicherung entscheiden Sie: Behalten Sie die gerenderten Dateien in Pagr mit einer Aufbewahrungsfrist, die Sie festlegen, oder rendern Sie ohne Persistenz, dann bleibt nichts zurück.

Plattform

Gebaut, um unter einem Produkt zu sitzen, nicht daneben

Mandantenfähigkeit ist hier keine Tarifstufe. Organisationen, Projekte, versionierte Templates, eingegrenzte Schlüssel und Verbrauchserfassung sind der Aufbau der Plattform.

Objektmodell
Pagr organisation
billing project
invoice v4 published
credit-note v2 published
onboarding project
welcome-letter v5 draft

Organisationen und Projekte

Trennen Sie Ihre Umgebungen und Ihre Kunden sauber, mit API-Schlüsseln, die jeweils darauf begrenzt sind.

Versionierte Templates

Legen Sie pro Aufruf eine Version fest. Nehmen Sie eine fehlerhafte Änderung zurück, ohne ein Deployment anzufassen.

Verbrauch und Audit-Trails

Wissen Sie, was gerendert wurde, aus welcher Template-Version und mit welchem Schlüssel.

Schlüssel holen und etwas rendern.

Ein kostenloser Workspace, ein Testschlüssel und 100 Renders pro Monat. Keine Kreditkarte erforderlich.

Dokumentation lesen