22
0
Fork 0
wiki/HowtoWkhtmltopdf.md

141 lines
4.2 KiB
Markdown
Raw Permalink Normal View History

2018-12-07 02:49:01 +01:00
---
categories: web tool
title: Howto wkhtmltopdf
...
2016-12-29 11:25:39 +01:00
2018-12-07 02:49:01 +01:00
* Documentation : <https://wkhtmltopdf.org/usage/wkhtmltopdf.txt>
2016-12-29 11:25:39 +01:00
2018-12-07 02:49:01 +01:00
[wkhtmltopdf](https://wkhtmltopdf.org/) est un outil libre pour transformer un document HTML au format PDF. Il s'utilise en ligne de commande et ne nécessite pas de lancer un environnement graphique grâce à l'utilisation du moteur [Qt WebKit](https://wiki.qt.io/Qt_WebKit).
2016-12-29 11:25:39 +01:00
## Installation
2018-12-07 02:49:01 +01:00
wkhtmltopdf est disponible dans les dépôts officiels de Debian mais cela nécessite d'installer un serveur X.
2016-12-29 11:25:39 +01:00
2019-08-21 00:31:11 +02:00
Nous préférons l'installer via le package `.deb` (qui fonctionne bien avec Debian 10 malgré son nom) fourni avec des librairies statiques sur le [site officiel](https://wkhtmltopdf.org/downloads.html) :
2016-12-29 11:25:39 +01:00
~~~
2018-12-07 02:49:01 +01:00
# apt install ca-certificates fontconfig fontconfig-config fonts-dejavu-core libfontconfig1 libfontenc1 \
2019-08-21 00:31:11 +02:00
libfreetype6 libjpeg62-turbo libpng16-16 libxfont2 libxrender1 openssl ucf x11-common xfonts-75dpi \
2018-12-07 02:49:01 +01:00
xfonts-base xfonts-encodings xfonts-utils
# cd /tmp
# wget --no-check-certificate https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.buster_amd64.deb
# chmod 644 wkhtmltox_0.12.6-1.buster_amd64.deb
# apt install ./wkhtmltox_0.12.6-1.buster_amd64.deb
~~~
2019-08-21 00:31:11 +02:00
> *Note* : Pour Debian 9 :
>
> ~~~
> # apt install ca-certificates fontconfig fontconfig-config fonts-dejavu-core libfontconfig1 libfontenc1 \
> libfreetype6 libjpeg62-turbo libpng16-16 libxfont1 libxrender1 openssl ucf x11-common xfonts-75dpi \
> xfonts-base xfonts-encodings xfonts-utils
>
> # cd /tmp
> # wget --no-check-certificate https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.stretch_amd64.deb
> # chmod 644 wkhtmltox_0.12.6-1.stretch_amd64.deb
> # apt install wkhtmltox_0.12.6-1.stretch_amd64.deb
2019-08-21 00:31:11 +02:00
> ~~~
>
> Pour Debian 8 :
2018-12-07 02:49:01 +01:00
>
> ~~~
> # apt install fontconfig fontconfig-config fonts-dejavu-core libexpat1 libfontconfig1 \
2019-01-09 22:23:14 +01:00
> libfontenc1 libfreetype6 libjpeg62-turbo libpng12-0 libxfont1 libxrender1 ucf \
2018-12-07 02:49:01 +01:00
> x11-common xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils
> # wget https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.jessie_amd64.deb
2019-01-09 22:42:53 +01:00
> # dpkg -i wkhtmltox_0.12.5-1.jessie_amd64.deb
2018-12-07 02:49:01 +01:00
> ~~~
2016-12-29 11:25:39 +01:00
## Pixelization
2018-11-16 11:45:40 +01:00
Si le rendu devient pixelisé (en général sur la font par défaut), remplir le fichier de conf "no-bitmaps" correspondant à celui pointé par "/etc/fonts/conf.avail/70-no-bitmaps.conf".
2016-12-29 11:25:39 +01:00
2017-01-03 11:20:35 +01:00
~~~{.xml}
2016-12-29 11:25:39 +01:00
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Reject bitmap fonts -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="scalable"><bool>false</bool></patelt>
</pattern>
</rejectfont>
</selectfont>
</fontconfig>
~~~
Ne pas oublier de rendre ce fichier en lecture pour tous.
2019-01-09 22:19:58 +01:00
voir <https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2193#issuecomment-136962264%29>
2018-12-07 02:49:01 +01:00
## wkhtmltopdf as a service
2019-01-09 22:42:53 +01:00
Utilisation avec [Node JS](HowtoNodeJS) inspirée de <https://github.com/traum-ferienwohnungen/docker-wkhtmltopdf-aas/blob/master/Dockerfile>
2018-12-07 02:49:01 +01:00
~~~
# su - foo
$ npm install yarn coffee-script forever bootprint bootprint-openapi
$ wget https://raw.githubusercontent.com/traum-ferienwohnungen/docker-wkhtmltopdf-aas/master/swagger.yaml
$ ./node_modules/.bin/bootprint openapi swagger.yaml documentation
$ wget https://raw.githubusercontent.com/traum-ferienwohnungen/docker-wkhtmltopdf-aas/master/package.json
$ wget https://raw.githubusercontent.com/traum-ferienwohnungen/docker-wkhtmltopdf-aas/master/app.coffee
$ ./node_modules/.bin/yarn install
$ ./node_modules/.bin/coffee --version
$ npm start
~~~
Script de lancement :
~~~
export USER='foo'
export PASS='PASSWORD'
export PAYLOAD_LIMIT='200mb'
npm start
~~~
Utilisation :
~~~
$ GET http://foo:PASSWORD@localhost:5555/metrics
$ GET http://foo:PASSWORD@localhost:5555/healthcheck
$ GET http://foo:PASSWORD@localhost:5555/status
~~~
2019-01-09 22:42:53 +01:00
### gestion via systemd
On définit un script `start.sh` :
~~~
#!/bin/sh
export USER='foo'
export PASS='PASSWORD'
export PAYLOAD_LIMIT='200mb'
umask 027
cd /foo/bar
npm start
~~~
Et une unité [systemd](HowtoSystemd) du type :
~~~
[Unit]
Description=wkhtmltopdf service
After=network.target
[Service]
Restart=always
User=foo
Group=foo
ExecStart=/foobar/start.sh
[Install]
WantedBy=multi-user.target
2019-08-21 00:31:11 +02:00
~~~