Client installieren

Den npm-Client installieren und PDFs mit einem API-Key erzeugen.

1. Paket installieren

npm install tuix-pdf-service-client

2. Client konfigurieren

Konfiguriere den Client mit der Basis-URL und deinem API-Key. Der API-Key gehört in die Option headers, als Header x-api-key.

import { ClientApi, Configuration } from 'tuix-pdf-service-client'
 
export const pdfClient = new ClientApi(
    new Configuration({
        basePath: process.env.API_BASE_URL,
        headers: {
            'x-api-key': process.env.TUIX_PDF_API_KEY,
        },
    }),
)

Ein API-Key hat vollen Zugriff auf die API und gehört nur auf den Server. Um aus einer Frontend-App zu erzeugen, leite den Aufruf über dein eigenes Backend, siehe Aus einem anderen Service.

3. PDF erzeugen

import { randomUUID } from 'node:crypto'
 
const response = await pdfClient.aPICreatePdfByTemplate({
    applicationId: 'YOUR_APPLICATION_ID',
    createPdfRequestDTO: {
        payloads: [
            {
                id: randomUUID(),
                templateId: 'YOUR_TEMPLATE_ID',
                data: { customerName: 'Jane Doe', total: '249.00' },
            },
        ],
    },
})
 
console.log(response.generatedDocuments)
// [{ id: '…', fileId: 'f2c1…', templateId: '…', url: 'https://…/api/applications/…/pdf-files/f2c1…' }]

id ist deine eigene Kennung für das Dokument. Der Service interpretiert sie nicht, sondern gibt sie in der Antwort zurück, damit du Ergebnisse zuordnen kannst. Nimm eine UUID, z. B. deine Auftrags- oder Rechnungs-ID.

fileId ist die ID, die der Service der erzeugten Datei gegeben hat, und zugleich das letzte Segment von url. Speichere sie, wenn du lieber eine eigene Referenz behältst und die Download-Anfrage aus applicationId und fileId selbst baust.

url ist der Endpunkt, unter dem das PDF ausgeliefert wird. Es ist kein öffentlicher Link: das Abrufen braucht denselben API-Key, siehe PDF herunterladen.

data ist ein einfaches Objekt, seine Schlüssel sind die Variablen der Vorlage. Siehe Template-Syntax und Request-Referenz.

4. Mehrere Dokumente auf einmal

payloads ist ein Array, ein Aufruf kann also einen Stapel erzeugen. Die Dokumente dürfen unterschiedliche Vorlagen derselben Anwendung nutzen:

const { generatedDocuments } = await pdfClient.aPICreatePdfByTemplate({
    applicationId: 'YOUR_APPLICATION_ID',
    createPdfRequestDTO: {
        payloads: orders.map((order) => ({
            id: order.id,
            templateId: 'YOUR_TEMPLATE_ID',
            data: { customerName: order.customer, total: order.total },
        })),
    },
})

Die Antwort kommt, wenn jedes Dokument des Stapels gerendert ist, und ein einzelnes fehlerhaftes Dokument lässt die ganze Anfrage scheitern. Halte Stapel klein genug für dein eigenes Request-Timeout.

Auf dieser Seite