PDF-Generierung in JavaScript (Node.js): Bibliotheken und Werkzeuge

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

PDF-Generierung in JavaScript (Node.js): Bibliotheken und Werkzeuge



Die Generierung von PDF-Dokumenten ist eine häufige Aufgabe in der Webentwicklung. Rechnungen, Berichte, Zertifikate, Tickets – all das lässt sich bequem serverseitig erstellen. Im Node.js-Ökosystem gibt es mehrere ausgereifte Lösungen, die jeweils für bestimmte Szenarien geeignet sind. In diesem Artikel betrachten wir drei grundlegende Ansätze und beliebte Bibliotheken zur PDF-Erstellung in JavaScript.



Überblick über beliebte Bibliotheken



Die Wahl des Werkzeugs hängt von der Komplexität des Dokuments ab: einfache Textberichte, Datentabellen oder komplexe Layouts mit HTML+CSS. Nachfolgend werden drei wichtige Bibliotheken vorgestellt.



1. PDFKit – Low-Level-Arbeit mit PDF



PDFKit ist die beliebteste Bibliothek zum Erstellen von PDFs „von Grund auf“. Sie ermöglicht das Zeichnen von Text, Linien, Rechtecken und Bildern mithilfe eines Koordinatengitters. Ideal für dynamische Dokumente mit präziser Positionierung.



Vorteile von PDFKit:

  • Vollständige Kontrolle über jedes Element der Seite
  • Benötigt keinen Browser oder Puppeteer
  • Unterstützung für die Einbettung von Schriftarten (TrueType, OpenType)
  • Arbeitet asynchron mit Streams (Stream API)


Beispiel eines einfachen Dokuments:



const PDFDocument = require('pdfkit');const fs = require('fs');

const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));

// Überschriftdoc.fontSize(25).text('Hallo, PDFKit!', 100, 100);

// Normaler Textdoc.fontSize(12).text('Dies ist ein einfaches PDF-Dokument, erstellt mit Node.js.', 100, 150);

// Linie zeichnendoc.moveTo(100, 200).lineTo(500, 200).stroke();

// Bild hinzufügendoc.image('logo.png', 100, 220, { width: 100 });

doc.end();


2. Puppeteer – Generierung aus HTML/CSS



Puppeteer ist eine Bibliothek zur Steuerung eines headless Chrome-Browsers. Sie ermöglicht das Laden einer HTML-Seite (oder deren dynamische Generierung) und das Speichern als PDF. Dies ist die beste Wahl, wenn Sie bereits HTML-Vorlagen oder komplexe CSS-Stile haben.



Vorteile von Puppeteer:

  • Präzise Darstellung von CSS (flex, grid, Schriftarten)
  • Unterstützung von JavaScript auf der Seite (Diagramme, Tabellen)
  • Möglichkeit zur Angabe von Format, Rändern, Kopf- und Fußzeilen
  • Ideal für Berichte und Rechnungen


Beispiel für die PDF-Generierung aus HTML:



const puppeteer = require('puppeteer');

(async () => { const browser = await puppeteer.launch(); const page = await browser.newPage();

const html = `<!DOCTYPE html> <html> <head><style> body { font-family: Arial; padding: 20px; } h1 { color: #2c3e50; } table { border-collapse: collapse; width: 100%; } td, th { border: 1px solid #ccc; padding: 8px; } </style></head> <body> <h1>Monatsbericht</h1> <table> <tr><th>Produkt</th><th>Menge</th></tr> <tr><td>Laptop</td><td>5</td></tr> <tr><td>Maus</td><td>10</td></tr> </table> </body></html>`;

await page.setContent(html); await page.pdf({ path: 'report.pdf', format: 'A4', printBackground: true });

await browser.close(); console.log('PDF erstellt!');})();


3. jsPDF – Generierung auf dem Client (und Node.js)



jsPDF wurde ursprünglich für den Browser entwickelt, hat aber eine Version für Node.js. Es ist leichtgewichtig und gut für einfache Dokumente geeignet. In Node.js wird es über das Paket jspdf mit zusätzlichen Abhängigkeiten verwendet.



Vorteile von jsPDF:

  • Kleine Größe
  • Unterstützung für Unicode und Kyrillisch (durch Schriftarteinbindung)
  • Kann sowohl auf dem Client als auch

Empfehlungen