thomaskekeisen.de

Aus dem Leben eines Bildschirmarbyters

PDF-Dateien aus HTML erstellen

Wer serverseitig PDF-Dateien erstellen möchte, hat nach Abhängigkeit der verwendeten Programmiersprache und der verwendeten Frameworks eine große Bandbreite an Möglichkeiten. Ich entwickle meine Server-Anwendungen meist auf Basis des Symfony-Frameworks und erzeuge entsprechende PDF-Dateien, in dem ich sauberes HTML mit dem Tool wkhtmltopdf einfach konvertiere. Vereinfacht wird das ganze außerdem durch das Symfony-Bundle Snappy.

Einzig die Installation von wkhtmltopdf ist etwas komplizierter, vor allem wenn diese automatisiert auf der Infrastruktur von Amazon Webservices passieren soll. Eine Anleitung:

Installation auf Amazons Elastic Beanstalk

Die Installation auf AmazonsElastic Beanstalk wird über eine .config -Datei geregelt, die sich in einem Ordner namens .ebextensions befindet und mit der Anwendung auf den Server geladen wird. Die Datei kann nach Belieben benannt werden, ich habe sie install-wkhtmltopdf.config getauft.

Folgende Konfiguration führt sechs Linux-Befehle der Reihe nach aus und installiert damit wkhtmltopdf:

        .ebextensions/install-wkhtmltopdf.config
        
            container_commands:
                1_install_wkhtmltopdf:
                    command: yum -y install fontconfig libXrender libXext xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi freetype libpng zlib libjpeg-turbo openssl icu
                    ignoreErrors: true

                2_install_wkhtmltopdf:
                    # see: https://wkhtmltopdf.org/downloads.html for updates
                    command: wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz --dns-timeout=5 --connect-timeout=5
                    test: test ! -f .wkhtmltopdf

                3_install_wkhtmltopdf:
                    command: tar -xJf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
                    test: test ! -f .wkhtmltopdf

                4_install_wkhtmltopdf:
                    command: cp wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
                    test: test ! -f .wkhtmltopdf

                5_install_wkhtmltopdf:
                    command: cp wkhtmltox/bin/wkhtmltoimage /usr/local/bin/wkhtmltoimage
                    test: test ! -f .wkhtmltopdf

                6_install_wkhtmltopdf:
                    command: touch .wkhtmltopdf
        
    

Die manuell erzeugte Datei .wkhtmltopdf sorgt übrigens nur dafür, dass wkhtmltopdf nicht bei jedem Software-Update der Server-Anwendung erneut installiert wird, sondern nur dann, wenn es auch tatsächlich fehlt.

Installation auf Amazons EC2

Wer auf den Elastic Beanstalk als bequemen Container verzichtet und auf individuell angepasste EC2-Maschinen setzt, kann die Befehle auch einfach der Reihe nach manuell in der Konsole eingeben:

        
            yum -y install fontconfig libXrender libXext xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi freetype libpng zlib libjpeg-turbo openssl icu
            wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz --dns-timeout=5 --connect-timeout=5
            tar -xJf wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
            cp wkhtmltox/bin/wkhtmltopdf /usr/local/bin/wkhtmltopdf
            cp wkhtmltox/bin/wkhtmltoimage /usr/local/bin/wkhtmltoimage
        
    

Teilen

Kommentare