Was ist pdf-lib und wofür wird es benötigt?
pdf-lib ist eine leistungsstarke und leichtgewichtige Bibliothek zum Erstellen und Bearbeiten von PDF-Dokumenten in JavaScript (Node.js und Browser). Im Gegensatz zu schwergewichtigen Lösungen wie Puppeteer oder jsPDF benötigt pdf-lib keine Installation einer Browserumgebung (Chromium) und arbeitet ausschließlich mit nativen PDF-Strukturen. Es ist ideal für die serverseitige Generierung von Berichten, Rechnungen, Zertifikaten und allen anderen Dokumenten, bei denen Sie die volle Kontrolle über den Inhalt benötigen: Text, Schriftarten (einschließlich Einbettung), Bilder, Formulare, Anmerkungen und Seiten.
Installation
Die Installation über npm ist einfach:
npm install pdf-libImportieren Sie es dann in Ihr Projekt:
const { PDFDocument, rgb, StandardFonts } = require('pdf-lib');Hauptfunktionen
- PDF von Grund auf neu erstellen — Hinzufügen von Seiten, Text, Bildern.
- Vorhandene PDFs bearbeiten — Seiten kopieren, Text darüber einfügen, Dokumente zusammenführen.
- Arbeit mit Schriftarten — Unterstützung für Standardschriftarten (Helvetica, TimesRoman) und Einbettung benutzerdefinierter TTF-Schriftarten.
- Zeichnen von Formen — Linien, Rechtecke, Ellipsen mit einstellbarer Farbe und Transparenz.
- Formulare und Anmerkungen — Erstellen von Textfeldern, Schaltflächen, Links.
- Export als Uint8Array — Das Ergebnis kann in einer Datei gespeichert oder an den Client gesendet werden.
Beispielcode für Node.js
Erstellen wir ein einfaches PDF mit einer Überschrift und einem Bild:
const { PDFDocument, rgb } = require('pdf-lib');const fs = require('fs');
async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage([600, 400]); // Text page.drawText('Hallo Welt!', { x: 50, y: 350, size: 30, color: rgb(0, 0.53, 0.71), }); // Rechteck page.drawRectangle({ x: 50, y: 200, width: 200, height: 100, color: rgb(0.9, 0.1, 0.1), borderColor: rgb(0, 0, 0), borderWidth: 2, }); // Bild einbetten (PNG) const imageBytes = fs.readFileSync('logo.png'); const image = await doc.embedPng(imageBytes); page.drawImage(image, { x: 300, y: 250, width: 100, height: 100, }); const pdfBytes = await doc.save(); fs.writeFileSync('output.pdf', pdfBytes);}
createPDF().catch(console.error);Wann sollte man pdf-lib verwenden?
pdf-lib ist die beste Wahl, wenn Sie in einer Node.js-Umgebung (oder im Browser) arbeiten und Folgendes benötigen:
- Schnelles Generieren von PDFs ohne Browserstart (Speicher- und Zeitersparnis).
- Einbetten benutzerdefinierter Schriftarten (z. B. für Kyrillisch).
- Bearbeiten vorhandener PDFs (Wasserzeichen hinzufügen, Dokumente zusammenführen).
- Erstellen interaktiver Formulare.
Vermeiden Sie pdf-lib, wenn Sie komplexes HTML/CSS in PDF rendern müssen (hierfür ist Puppeteer besser geeignet) oder mit großen Datenmengen arbeiten (schwere PDFs können die Leistung verlangsamen).