Skip to content

18 – PDF, Print & Templates

Reifegrad: 🟢 produktiv · Schicht: src/templates/*.html, src/lib/template-engine.ts, src/lib/fonts.ts, pdf-lib, src/app/api/pdf/*, src/app/api/print/*, src/app/print/*

Zweck

Geschäftsdokumente (Angebot, Auftragsbestätigung, Rapport, Rechnung) als druck-/versandfertige PDFs erzeugen – gebrandet mit Firmenlogo/-farben.

HTML-Templates (src/templates/)

DateiVerwendung
offer-template.htmlAngebot (einseitig)
offer-multi-page.htmlAngebot (mehrseitig, viele Positionen)
order-confirmation-template.htmlAuftragsbestätigung
rapport-template.htmlBaustellenrapport
invoice-template.htmlRechnung (Human-PDF; E-Rechnung siehe 10-rechnungen-e-rechnung)
  • Template-Engine (src/lib/template-engine.ts): füllt Platzhalter mit Datensatz + Mandanten-Branding (companies.primary_color/logo/footer_text).
  • Fonts (src/lib/fonts.ts): eingebettete Schriften für konsistente Darstellung in pdf-lib.
  • Im Docker-Runner werden die Templates explizit mitkopiert (COPY src/templates).

Erzeugung

EndpointDokument
GET /api/pdf/offers/[id]Angebots-PDF
GET /api/pdf/rapport/[id]Rapport-PDF
GET /api/pdf/invoices/[id]Rechnungs-PDF
GET /api/print/offers/[id]Druckoptimierte HTML-Ansicht
  • Druckseite /print/offers/[id] rendert serverseitig (sauberer Druck/„Als PDF speichern").
  • Domain liefert PDF-Links (getOfferPdfLink, getInvoicePdfLink).
  • Die E-Rechnung nutzt einen eigenen PDF-Pfad (packages/domain/src/einvoice/human-pdf.ts + ZUGFeRD-Einbettung), siehe 10-rechnungen-e-rechnung.

Versand

Erzeugte PDFs werden per Microsoft Graph über no-reply@work7.net versendet: sendOffer, sendInvoice, sendRapportEmail (siehe 05-angebote-vertrieb, 09-rapport, 10-rechnungen-e-rechnung). Signierte PDFs (DocuSign) werden als signed_pdf am Datensatz abgelegt (siehe 14-docusign-signing).

Bekannte Befunde / offene Punkte

  • Zwei PDF-Erzeugungswege: HTML-Template + pdf-lib (Standarddokumente) vs. dedizierte E-Rechnungs-Pipeline (CII/ebInterface). Beide korrekt, aber getrennt zu pflegen.
  • Templates sind statisches HTML (keine Theme-Auswahl pro Mandant über Branding-Farben hinaus).

Verwandte Notes

Work7 · Software für Handwerksbetriebe