PDF-Generierung in TypeScript: Vollständiger Leitfaden für Entwickler
Die Erstellung von PDF-Dokumenten ist eine gefragte Aufgabe in der modernen Webentwicklung. In TypeScript gibt es mehrere leistungsstarke Bibliotheken, die die PDF-Generierung sowohl clientseitig als auch serverseitig (Node.js) ermöglichen. In diesem Artikel betrachten wir drei Hauptwerkzeuge: PDFKit, jsPDF und pdf-lib, und zeigen praktische Anwendungsbeispiele.
Warum PDF in TypeScript generieren?
TypeScript fügt statische Typisierung hinzu, was besonders bei der Arbeit mit Dokumenten komplexer Struktur wichtig ist. Die Verwendung von TypeScript zur PDF-Generierung ermöglicht:
- Vermeidung von Typfehlern bei der Erstellung von Tabellen und Stilen
- Vereinfachung des Refactorings großer Projekte
- Integration der PDF-Generierung in bestehende TypeScript-Projekte (React, Angular, Node.js)
Überblick über Bibliotheken zur PDF-Generierung
1. PDFKit (Node.js)
PDFKit ist die beliebteste Bibliothek zur PDF-Erstellung auf dem Server. Sie bietet einen Low-Level-Zugriff auf PDF-Objekte, unterstützt Schriftarten, Bilder, die Einbettung von Vektorgrafiken und kyrillische Zeichen (bei Einbindung entsprechender Schriftarten).
import PDFDocument from 'pdfkit';import fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(24).text('Hallo, Welt!', 100, 100);doc.fontSize(12).text('Dies ist ein PDF, erstellt mit PDFKit und TypeScript', 100, 150);doc.end();Besonderheiten:
- Funktioniert nur in Node.js (nicht für den Browser geeignet)
- Erfordert manuelle Schriftartkonfiguration für kyrillische Zeichen
- Unterstützt komplexe Layouts, Tabellen und Grafiken
2. jsPDF (Browser und Node.js)
jsPDF ist eine vielseitige Bibliothek, die sowohl im Browser als auch auf dem Server funktioniert. Sie ist einfacher zu erlernen, hat jedoch Einschränkungen bei der Komplexität von Layouts.
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.text('PDF-Generierung mit TypeScript', 10, 10);doc.save('document.pdf');Besonderheiten:
- Einfache API für Basisdokumente
- Unterstützung für kyrillische Zeichen (erfordert Einbindung von Schriftarten über addFont)
- Kann mit Canvas und HTML-Elementen arbeiten
3. pdf-lib (modern und flexibel)
pdf-lib ist eine leichtgewichtige Bibliothek mit hervorragender TypeScript-Unterstützung. Sie ermöglicht die PDF-Erstellung von Grund auf oder die Bearbeitung vorhandener Dokumente.
import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';
async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage(); const font = await doc.embedFont(StandardFonts.Helvetica);
page.drawText('PDF mit pdf-lib', { x: 50, y: 700, size: 24, font, color: rgb(0, 0, 0), });
const pdfBytes = await doc.save(); // Speichern oder senden}Besonderheiten:
- Vollständige TypeScript-Unterstützung (Typen inbegriffen)
- Funktioniert im Browser und in Node.js
- Ermöglicht die Modifikation vorhandener PDFs
- Erfordert manuelle Arbeit mit Schriftarten für kyrillische Zeichen
Vergleich der Bibliotheken
| Eigenschaft | PDFKit | jsPDF | pdf-lib |
|---|---|---|---|
| Laufzeitumgebung | Node.js | Browser + Node.js | Browser + Node.js |
| TypeScript-Unterstützung | Teilweise (über @types) | Teilweise | Vollständig |
| Kyrillische Zeichen | Erfordert Schriftarten | Erfordert Schriftarten | Erfordert Schriftarten |
| Komplexe Layouts | Hervorragend |