Webseiten serverseitig als PDF rendern mit PhantomJS

Möchte man eine komplexe Webseite als pdf (oder auch als Bild) rendern, so kann man dies bequem serverseitig mit phantomjs erledigen.

PhantomJS beschreibt sich selbst als headless Webkit, das über eine Javascript API scriptbar ist. Man kann es zum Testen von Webseiten, Screen Capture und Automatisierung benutzen. Hier ein kurzes Beispiel, wie man damit aus einer Webseite ein pdf erzeugen kann.

Man lädt das Binary hier herunter, entpackt es und wirft es in den PATH (oder man gibt später den Pfad dahin an).

Nun erstellt man ein kleines Script (in unserem Beispiel capture.js), das die gewünschte URL aufruft und in das gewünschte Format rendert. Dabei können noch Optionen für das Zielformat angegeben werden.

var page = require('webpage').create();
page.paperSize = {
 format: 'A4',
 orientation: 'portrait',
 margin: '2cm'
};
page.open('https://gionkunz.github.io/chartist-js/examples.html');

page.onLoadFinished = function(status){
 console.log('Status: ' + status);
 page.render('chartist.pdf');
 phantom.exit();
};

Es können auch Kopf- und Fußzeilen eingefügt werden, andere Seitenformate gewählt werden, oder man gibt nur die Breite an, dann wird ein kontinuierliches Dokument erzeugt. In der pdf ist alles, was geht, eine Vektorgrafik. Hätte man lieber ein Bild als Endergebnis, so ändert man die Dateiendung einfach auf png.

Aufgerufen wird das ganze dann auf dem Server mit

path/to/phantomjs capture.js

Über Sebastian Anklamm 1 Artikel
seit 2016 MaTSE-Azubi bei VCAT

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*