15
11

More than 5 years have passed since last update.

Docker コンテナ上で wkhtmltopdf を動かす

Last updated at Posted at 2017-08-31

はじめに

HTML を PDF に変換してくれる wkhtmltopdf は便利ですがインストールがちょっと面倒です。そこで Docker で動かせたら便利そうだなと思い、試してみました。

方法

まず Dockerfiledocker-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

そしてイメージをビルドした後 (非常に時間がかかります :sweat_drops:) 、コンテナ内で wkhtmltopdf を実行します。なお、わざわざ docker-compose を利用しているのは、コンテナ起動時のボリュームの指定などをコマンドライン引数で指定するのではなく、設定ファイルに書いておきたかったためです。

$ docker-compose build
$ docker-compose run wkhtmltopdf http://www.google.com google.pdf

上記のコマンドを実行することで、カレントディレクトリに PDF が出力されます。日本語も正しく表示されています :tada:

スクリーンショット 2017-08-31 18.50.23.png

15
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11