PDFを扱うツールを集めたdockerコンテナを作りました

PDFを画像化したり、グレースケールにしたり、分割したりなどPDFを扱うツールを集めたdockerのコンテナを作ったので紹介します。

入っているツール

下記のツールが入っています(今後も更新する予定です)

  • pdftk
  • ghostscript
  • qpdf
  • pdf2dsc
  • pdf2ps
  • pdfdetach
  • pdffonts
  • pdfimages
  • pdfinfo
  • pdfseparate
  • pdftocairo
  • pdftohtml
  • pdftoppm
  • pdftops
  • pdftotext
  • pdfunite

準備

DockerHubのgkmr/pdf-toolsというリポジトリにあります。

docker pullした後PDFファイルの入出力先としてpdfディレクトリを作成します。

docker pull gkmr/pdf-tools
mkdir pdf

使い方

基本的な使い方はPDFファイルを先程作成したpdfディレクトリ以下に配置してコマンドを実行できます。

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools <command>

pdftk

PDFファイルを切り出したり結合したりすることができます。

PDFファイルの結合

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdftk /pdf/0.pdf /pdf/1.pdf cat output /pdf/merged.pdf

PDFファイルの切り出し

1ページ目から3ページ目を切り出します。

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdftk /pdf/input.pdf cat 1-3 output /pdf/splitted.pdf

rを使うと最後からのページ数を指定できます。

以下の例では2ページ目から最後から2ページ目までを取り出します。

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdftk /pdf/input.pdf cat 2-r2 output /pdf/splitted.pdf

ドキュメント

https://www.pdflabs.com/docs/pdftk-man-page/

ghostscript

Ghostscriptは埋め込みの画像をグレースケールにしたりフォントのアウトライン化したりフォントを埋め込んだりと色々なことができます。

グレースケールに変換

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools gs -sOutputFile=/pdf/grayscale.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibilityLevel=1.4 -dAutoRotatePages=/None -dBATCH /pdf/output.pdf

ドキュメント

https://www.ghostscript.com/doc/current/Use.htm

qpdf

パスワードの設定や解除をしたりリニアライズしてweb表示用に最適化したりできます。

パスワードの解除

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools qpdf --decrypt /pdf/encrypted.pdf --password=PASSWORD  /pdf/decrypted.pdf

リニアライズ(web表示用に最適化)

qpdf --linearize /pdf/input.pdf /pdf/output.pdf

ドキュメント

http://qpdf.sourceforge.net/files/qpdf-manual.html

pdf2dsc

このツールについては詳しくはわからないのですが、PostScriptのページリストを出力するようです。

dscファイルの出力

input.dscというファイルが出力されます。

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdf2dsc /pdf/input.pdf

ドキュメント

https://linux.die.net/man/1/pdf2dsc

pdf2ps

PostScriptファイルに変換します。

PostScriptファイルへの変換

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdf2ps /pdf/input.pdf /pdf/output.ps

ドキュメント

https://linux.die.net/man/1/pdf2ps

pdfdetach

埋め込みファイルの一覧を表示したりを抽出したりできます。

埋め込みファイルの抽出

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdfdetach -saveall -o output /pdf/input.pdf

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdfdetach.1.html

pdffonts

PDF内のフォントを解析します。

PDF内のフォントを表示

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdffonts /pdf/foo.pdf

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdffonts.1.html

pdfimages

PPM/PBM/PNG/TIFF/JPEG/JPEG2000などの画像に変換します。

JPEGへ変換

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdfimages -j /pdf/input.pdf /pdf/output

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdfimages.1.html

pdfinfo

PDFの情報を抽出します。

情報抽出

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdfinfo /pdf/foo.pdf

実行結果

Creator:        ScanSnap Manager #S1500M
Producer:       Mac OS X 10.10.5 Quartz PDFContext
CreationDate:   Sun Jul 22 10:04:03 2018 UTC
ModDate:        Sun Jul 22 10:04:03 2018 UTC
Tagged:         no
UserProperties: no
Suspects:       no
Form:           none
JavaScript:     no
Pages:          292
Encrypted:      no
Page size:      499 x 734 pts
Page rot:       0
File size:      220168154 bytes
Optimized:      no
PDF version:    1.3

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdfinfo.1.html

pdfseparate

PDFを分解して1ページずつにします。

1ページずつに分解

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdfseparate /pdf/input.pdf /pdf/output_%d.pdf

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdfseparate.1.html

pdftocairo

cairoというグラフィックライブラリを用いてPNG/JPEG/TIFF/PDF/PS/EPS/SVGに変換します。

JPEGへ変換

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdftocairo -jpeg /pdf/input.pdf /pdf/output

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdftocairo.1.html

pdftohtml

HTMLやXMLやPNGなどに変換します。

HTMLへ変換

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdftohtml /pdf/input.pdf /pdf/output

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdftohtml.1.html

pdftoppm

PPM形式PGM形式PBM形式のファイルに変換します。

PPMファイルへの変換

output-001.ppm output-002.ppm ・・・
というファイルが作成されます。

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdftoppm /pdf/input.pdf /pdf/output

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdftoppm.1.html

pdftops

PostScriptファイルに変換します。

PostScriptファイルに変換

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdftops /pdf/input.pdf /pdf/output.pdf

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdftops.1.html

pdftotext

テキストに変換します。

テキストのみファイルに出力

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdftotext /pdf/foo.pdf /pdf/foo.txt

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdftotext.1.html

pdfunite

PDFファイルを結合します。

PDFファイルの結合

docker run -v $PWD/pdf:/pdf gkmr/pdf-tools pdfunite /pdf/0.pdf /pdf/1.pdf /pdf/2.pdf /pdf/merged.pdf

ドキュメント

http://manpages.ubuntu.com/manpages/cosmic/man1/pdfunite.1.html