PDF-Erstellung in JavaScript (Node.js): Überblick über Bibliotheken und Werkzeuge
Das Erstellen von PDF-Dokumenten ist eine häufige Aufgabe in der Webentwicklung. Ob es um die Generierung von Rechnungen, Berichten, Zertifikaten oder einfach um den Export von Daten geht, Node.js bietet mehrere leistungsstarke Lösungen. In diesem Artikel betrachten wir die wichtigsten Bibliotheken für die Arbeit mit PDF auf der Serverseite von JavaScript, ihre Funktionen und Anwendungsbeispiele.
Warum PDF auf dem Server generieren?
Die PDF-Generierung auf dem Server (in Node.js) bietet eine Reihe von Vorteilen:
- Einheitlichkeit — das Dokument sieht auf allen Geräten gleich aus
- Sicherheit — Daten verlassen den Server nicht
- Automatisierung — PDFs können nach Zeitplan oder bei bestimmten Ereignissen erstellt werden
- Unterstützung komplexer Logik — Zugriff auf Datenbanken, Dateisysteme und andere Ressourcen
Wichtige Bibliotheken zur PDF-Erstellung in Node.js
1. PDFKit
PDFKit ist die beliebteste Bibliothek zum Erstellen von PDFs "von Grund auf". Sie benötigt keine externen Abhängigkeiten und ermöglicht die vollständige Kontrolle über den Dokumentinhalt.
Anwendungsbeispiel:
const PDFDocument = require('pdfkit');const fs = require('fs');
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));
// Inhalt hinzufügendoc.fontSize(25).text('Hallo, Welt!', 100, 100);doc.fontSize(12).text('Dies ist ein PDF, erstellt mit PDFKit.', 100, 150);
// Linie zeichnendoc.moveTo(100, 200).lineTo(500, 200).stroke();
// Dokument abschließendoc.end();Funktionen:
- Hinzufügen von Text mit verschiedenen Schriftarten und Größen
- Einfügen von Bildern (JPEG, PNG)
- Zeichnen von Linien, Rechtecken und Kreisen
- Unterstützung von Links und Lesezeichen
- Erstellung mehrseitiger Dokumente
2. Puppeteer
Puppeteer ist ein Werkzeug zur Steuerung des Chrome/Chromium-Browsers. Es ermöglicht die Generierung von PDFs aus HTML-Seiten, was für komplexe Layouts praktisch ist.
Anwendungsbeispiel:
const puppeteer = require('puppeteer');
async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage();
await page.setContent('<h1>Überschrift</h1><p>Dokumenttext</p>'); await page.pdf({ path: 'page.pdf', format: 'A4' });
await browser.close();}
generatePDF();Besonderheiten:
- Unterstützung von CSS, JavaScript und allen modernen Webtechnologien
- Ideal für die Konvertierung von HTML-Vorlagen in PDF
- Möglichkeit des Druckens mit definierten Parametern (Format, Ränder, Skalierung)
- Erfordert die Installation von Chromium (~300 MB)
3. jsPDF (mit Anpassung für Node.js)
jsPDF ist eine clientseitige Bibliothek, aber es gibt Wrapper für die Verwendung in Node.js (z. B. jspdf-autotable).
Beispiel (mit jspdf und html2canvas):
const { jsPDF } = require('jspdf');const fs = require('fs');
const doc = new jsPDF();doc.text('Hallo aus Node.js!', 10, 10);doc.save('output.pdf');Einschränkungen: jsPDF unterstützt keine komplexen Layouts und erfordert zusätzliche Bibliotheken für die Arbeit mit HTML.
4. pdfmake
pdfmake ist eine Bibliothek, die auf der deklarativen Beschreibung des Dokuments im JSON-Format basiert.
Beispiel:
const pdfmake = require('pdfmake');const fs = require('fs');
const fonts = { Roboto: { normal: 'fonts/Roboto-Regular.ttf', bold: 'fonts/Roboto-Medium.ttf' }};
const printer = new pdfmake(fonts);
const docDefinition = { content: [ { text: Auch in der Bibliothek
Swagger/OpenAPI-Generierung für Rust: Utoipa und Aide
Generierung von QR-Codes in C++: Bibliothek QR-Code-generator
Redis-Client in Rust: Vollständige Anleitung zur Arbeit mit der Bibliothek redis-rs
Pimple PHP: Vollständige Anleitung mit Beispielen