PDF-Generierung in JavaScript (Node.js): Bibliotheken und Werkzeuge zur Erstellung von PDFs

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): Vollständiger Leitfaden zu Bibliotheken und Werkzeugen



Die Generierung von PDF-Dokumenten ist eine der gefragtesten Aufgaben in der Webentwicklung. Von der Erstellung von Rechnungen und Berichten bis hin zur Erstellung komplexer mehrseitiger Dokumente bietet Node.js leistungsstarke Werkzeuge für die Arbeit mit PDFs. In diesem Artikel betrachten wir die wichtigsten Bibliotheken und Ansätze zur Erstellung von PDF-Dateien auf der Serverseite von JavaScript.



Warum PDFs auf dem Server generieren?

Die serverseitige PDF-Generierung ermöglicht:

  • Dynamische Erstellung von Dokumenten basierend auf Daten aus der Datenbank
  • Sicherstellung konsistenter Formatierung
  • Arbeit mit großen Datenmengen ohne Belastung des Clients
  • Integration in bestehende Berichtssysteme


Wichtige Bibliotheken zur PDF-Generierung in Node.js



1. pdfkit — die klassische Lösung

pdfkit ist eine der beliebtesten Bibliotheken zur PDF-Erstellung von Grund auf. Sie bietet vollständige Kontrolle über den Dokumentinhalt: Text, Bilder, Tabellen, Vektorgrafiken.



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

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

// Text hinzufügendoc.fontSize(25).text('Hallo, Welt!', 100, 100);

// Linie zeichnendoc.moveTo(100, 150).lineTo(400, 150).stroke();

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

doc.end();


Vorteile: leichtgewichtig, schnell, unterstützt Unicode und Kyrillisch, viele Schriftarten.

Nachteile: erfordert manuelle Layout-Anpassung, keine integrierte HTML-Unterstützung.



2. Puppeteer — Generierung aus HTML

Puppeteer ist eine Bibliothek zur Steuerung eines headless Chrome-Browsers. Sie ermöglicht die Konvertierung von HTML-Seiten in PDF unter Beibehaltung aller Stile und Skripte.



const puppeteer = require('puppeteer');

async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setContent('<h1 style="color: red;">PDF-Überschrift</h1><p>Dokumenttext</p>'); await page.pdf({ path: 'output.pdf', format: 'A4', margin: { top: '20px', bottom: '20px' } }); await browser.close();}

generatePDF();


Vorteile: ideal für komplexe HTML-Layouts, unterstützt CSS, JavaScript, Schriftarten.

Nachteile: schwergewichtig (erfordert Chromium), langsamer als andere Bibliotheken.



3. pdf-lib — Modifikation bestehender PDFs

pdf-lib ist spezialisiert auf die Bearbeitung bestehender PDF-Dokumente. Ermöglicht das Hinzufügen von Text, Bildern und das Ausfüllen von Formularen.



const { PDFDocument } = require('pdf-lib');const fs = require('fs');

async function editPDF() { const existingPdfBytes = fs.readFileSync('template.pdf'); const pdfDoc = await PDFDocument.load(existingPdfBytes); const pages = pdfDoc.getPages(); const firstPage = pages[0]; firstPage.drawText('Neuer Text', { x: 50, y: 50, size: 20, color: rgb(0, 0, 0) }); const pdfBytes = await pdfDoc.save(); fs.writeFileSync('modified.pdf', pdfBytes);}

editPDF();


Vorteile: leichtgewichtig, keine externen Abhängigkeiten erforderlich, funktioniert hervorragend mit Formularen.

Nachteile: eingeschränkte Möglichkeiten zur Erstellung komplexer Layouts von Grund auf.



4. jsPDF — Client-Server-Lösung

jsPDF wurde ursprünglich für den Browser entwickelt, funktioniert aber auch in Node.js. Geeignet für einfache Dokumente.



const { jsPDF } = require("jspdf");

const doc = new jsPDF();doc.text("Hello world!", 10, 10);doc.save("output.pdf");


Vorteile: einfache API, funktioniert auf Client und Server.

Nachteile:

Empfehlungen