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