はじめに
HTML を PDF に変換してくれる wkhtmltopdf は便利ですがインストールがちょっと面倒です。そこで Docker で動かせたら便利そうだなと思い、試してみました。
方法
まず Dockerfile
と docker-compose.yml
を用意します。
Dockerfile
FROM ubuntu:14.04
RUN apt-get update -qq \
&& apt-get install -y \
build-essential \
xorg \
libssl-dev \
libxrender-dev \
wget \
unzip \
gdebi \
&& apt-get autoremove \
&& apt-get clean
WORKDIR /opt
# wkhtmltopdf をインストールする。
ENV WKHTMLTOPDF_VERSION 0.12.4
RUN wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/${WKHTMLTOPDF_VERSION}/wkhtmltox-${WKHTMLTOPDF_VERSION}_linux-generic-amd64.tar.xz
RUN tar vxfJ wkhtmltox-${WKHTMLTOPDF_VERSION}_linux-generic-amd64.tar.xz \
&& ln -s /opt/wkhtmltox/bin/wkhtmltopdf /usr/bin/wkhtmltopdf
# 日本語フォントとして Noto Fonts をインストールする。
RUN wget https://noto-website.storage.googleapis.com/pkgs/Noto-unhinted.zip \
&& unzip -d NotoSansJapanese Noto-unhinted.zip \
&& mkdir -p /usr/share/fonts/opentype \
&& mv -fv ./NotoSansJapanese /usr/share/fonts/opentype/NotoSansJapanese \
&& rm -rfv Noto-unhinted.zip \
&& fc-cache -fv
docker-compose.yml
version: '3.3'
services:
wkhtmltopdf:
build: .
volumes:
- .:/opt/data-volume
working_dir: /opt/data-volume
entrypoint:
- wkhtmltopdf
command:
- -h
そしてイメージをビルドした後 (非常に時間がかかります ) 、コンテナ内で wkhtmltopdf
を実行します。なお、わざわざ docker-compose
を利用しているのは、コンテナ起動時のボリュームの指定などをコマンドライン引数で指定するのではなく、設定ファイルに書いておきたかったためです。
$ docker-compose build
$ docker-compose run wkhtmltopdf http://www.google.com google.pdf
上記のコマンドを実行することで、カレントディレクトリに PDF が出力されます。日本語も正しく表示されています