© saicle/Shutterstock.com
PHP Magazin
PDFs mit Node.js erstellen

Node.js-Module: PDFKit

Zu den eher unbeliebten Aufgaben in der Webentwicklung gehört die Erstellung von PDF-Dateien. Oft sieht man sich Aufgaben dieser Art gegenüber, wenn es um das Erstellen von Rechnungen oder ähnlichen Belegen geht. Das eigentliche Generieren des Dokuments ist dabei nicht das größte Problem, sondern, dass das Dokument nach etwas aussehen soll - beziehungsweise bestimmten Layoutvorgaben entsprechen muss. In den meisten Fällen endet das Ganze in einer Trial-and-Error-Orgie, in der um ein pixelgenaues Ergebnis gefeilscht wird. Die gute Nachricht: Das kann man auch in Node.js haben.

Sebastian Springer


Wie so oft in der Programmierung gibt es nicht die eine Standardlösung, sondern ein Sammelsurium aus vielen Bibliotheken, von denen jede verspricht, es ein bisschen besser als alle anderen zu machen.

Eine recht populäre Lösung, die einerseits über einen großen Funktionsumfang verfügt und mit der sich andererseits trotzdem recht schnell Ergebnisse generieren lassen, ist das PDFKit [1]. Natürlich liegt die Dokumentation dieser Bibliothek auch als PDF vor. Die Entwickler handeln hier nach dem Motto „Eat your own dog food“. Etwas gewöhnungsbedürftig erscheint, dass sämtliche Beispiele in der Dokumentation nicht direkt in JavaScript, sondern in CoffeeScript geschrieben sind, was daran liegt, dass auch das ­PDFKit selbst in CoffeeScript implementiert ist. Dabei stellt auch das kein wirkliches Problem dar, man muss sich lediglich ein paar Klammern und Semikolons dazu denken.

Ansonsten ist das Schema für die Benutzung das gleiche wie für jedes andere Node.js-Paket: Die Installation erfolgt über den Node Package Manager mit dem Kommando npm install pdfkit. Nach der Installation kann man sofort mit der PDF-Generierung beginnen.

Initialisierung

Die Initialisierung eines PDFs folgt immer dem gleichen Prozess. Zunächst werden die notwendigen Module geladen, dann wird ein neues Objekt generiert und ein Dateisystemstream erstellt, über den das PDF gespeichert wird. Schließlich wird nach den Operationen zur Erzeugung des Dokumenteninhalts die end-Methode aufgerufen:

var PDFDocument = require('pdfkit');var fs = require('fs'); var doc = new PDFDocument(); doc.pipe(fs.createWriteStream('output.pdf')); // Inhalt hier doc.end();

Text

Die erste Übung ist das Einfügen eines simplen Texts. Mit doc.text("Hello World") erzeugt man einen einfachen Textknoten. Reicht die Standardplatzierung nicht aus, kann man zusätzlich die x- und y-Koordinaten angeben. Ansonsten ist das Layout zeilenbasiert; die Schriftgröße wird mit der doc.fontSize-Methode gesetzt, die Textfarbe setzt man mit doc.fillColor:

doc.fillColor('green'); .fontSize(25); .text('Hello World');

Zeichnen

Von einfachen Linien bis hin zu komplexen Formen kann so ziemlich alles mit dem PDFKit gezeichnet werden. Mit der moveTo-Methode kann der Cursor zu einer bestimmten Position bewegt werden, mit lineTo kann eine Linie gezogen werden und mit der circle-Methode erstellt man einen Kreis. Ähnliche Methoden gibt es auch für zahlreiche weitere geometrische Formen:

doc.circle(100, 100, 50) .stroke();

Bilder

Jetzt gilt es, noch ein Bild in d...

PHP Magazin
PDFs mit Node.js erstellen

Node.js-Module: PDFKit

Zu den eher unbeliebten Aufgaben in der Webentwicklung gehört die Erstellung von PDF-Dateien. Oft sieht man sich Aufgaben dieser Art gegenüber, wenn es um das Erstellen von Rechnungen oder ähnlichen Belegen geht. Das eigentliche Generieren des Dokuments ist dabei nicht das größte Problem, sondern, dass das Dokument nach etwas aussehen soll - beziehungsweise bestimmten Layoutvorgaben entsprechen muss. In den meisten Fällen endet das Ganze in einer Trial-and-Error-Orgie, in der um ein pixelgenaues Ergebnis gefeilscht wird. Die gute Nachricht: Das kann man auch in Node.js haben.

Sebastian Springer


Wie so oft in der Programmierung gibt es nicht die eine Standardlösung, sondern ein Sammelsurium aus vielen Bibliotheken, von denen jede verspricht, es ein bisschen besser als alle anderen zu machen.

Eine recht populäre Lösung, die einerseits über einen großen Funktionsumfang verfügt und mit der sich andererseits trotzdem recht schnell Ergebnisse generieren lassen, ist das PDFKit [1]. Natürlich liegt die Dokumentation dieser Bibliothek auch als PDF vor. Die Entwickler handeln hier nach dem Motto „Eat your own dog food“. Etwas gewöhnungsbedürftig erscheint, dass sämtliche Beispiele in der Dokumentation nicht direkt in JavaScript, sondern in CoffeeScript geschrieben sind, was daran liegt, dass auch das ­PDFKit selbst in CoffeeScript implementiert ist. Dabei stellt auch das kein wirkliches Problem dar, man muss sich lediglich ein paar Klammern und Semikolons dazu denken.

Ansonsten ist das Schema für die Benutzung das gleiche wie für jedes andere Node.js-Paket: Die Installation erfolgt über den Node Package Manager mit dem Kommando npm install pdfkit. Nach der Installation kann man sofort mit der PDF-Generierung beginnen.

Initialisierung

Die Initialisierung eines PDFs folgt immer dem gleichen Prozess. Zunächst werden die notwendigen Module geladen, dann wird ein neues Objekt generiert und ein Dateisystemstream erstellt, über den das PDF gespeichert wird. Schließlich wird nach den Operationen zur Erzeugung des Dokumenteninhalts die end-Methode aufgerufen:

var PDFDocument = require('pdfkit');var fs = require('fs'); var doc = new PDFDocument(); doc.pipe(fs.createWriteStream('output.pdf')); // Inhalt hier doc.end();

Text

Die erste Übung ist das Einfügen eines simplen Texts. Mit doc.text("Hello World") erzeugt man einen einfachen Textknoten. Reicht die Standardplatzierung nicht aus, kann man zusätzlich die x- und y-Koordinaten angeben. Ansonsten ist das Layout zeilenbasiert; die Schriftgröße wird mit der doc.fontSize-Methode gesetzt, die Textfarbe setzt man mit doc.fillColor:

doc.fillColor('green'); .fontSize(25); .text('Hello World');

Zeichnen

Von einfachen Linien bis hin zu komplexen Formen kann so ziemlich alles mit dem PDFKit gezeichnet werden. Mit der moveTo-Methode kann der Cursor zu einer bestimmten Position bewegt werden, mit lineTo kann eine Linie gezogen werden und mit der circle-Methode erstellt man einen Kreis. Ähnliche Methoden gibt es auch für zahlreiche weitere geometrische Formen:

doc.circle(100, 100, 50) .stroke();

Bilder

Jetzt gilt es, noch ein Bild in d...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang