SEEDS Creator's Blog

読者です 読者をやめる 読者になる 読者になる

Linuxサーバーでpdftkを使ってpdfファイルを結合

Linux pdf php インフラ

pdftkはO'Reilly の PDF Hacks でも紹介されている PDF 操作ツールです。

Linuxサーバーのコマンドにてpdfを変換させる必要が出てきたので検証しました。 比較を行ったわけではないのですが、かなり高速なようです。

インストール

各OSに対応したインストール方法が、公式サイトで提示されています。 http://www.pdflabs.com/docs/install-pdftk/ 検証機はDebianの為、以下のコマンドでインストールできました

apt-get install pdftk

コマンド例

以下の公式サイトの使用例を翻訳しました 全部ではないので詳細は以下を確認してください。

 

Pdftk Examples http://www.pdflabs.com/docs/pdftk-cli-examples/

複数のPDFファイルを結合する。

(1.pdf 2.pdf 3.pdf が結合され 123.pdf が生成されます)

pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

 

複数のPDFファイルを結合する。(ハンドラー使用例)

(1.pdf 2.pdf が結合され 12.pdf が生成されます)

pdftk A=1.pdf B=2.pdf cat A B output 12.pdf

 

複数のPDFファイルを結合する。(ワイルドカード使用)

(カレントディレクトリのpdfファイルが結合され combined.pdf が生成されます)

pdftk *.pdf cat output combined.pdf

 

複数のPDFファイルのページを指定して結合する。(ワイルドカード使用)

(A(one.pdf)ファイルの1~7ページ、B(two.pdf)ファイルの1~5ページ、A(one.pdf)ファイルの8ページが順番に結合され combined.pdfが生成されます。)

pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf

ページの指定方法は以下のような形です

1-end (はじめから最後までのページ。つまりデフォルト)
1-6 (1~6ページ)
6-1 (1~6ページを逆順で)
4 (4ページ目だけ)
5 11 20 (5ページ、11ページ、20ページ)
1-6even (偶数ページの取得 → 2 4 6)
1-6odd (奇数ページの取得 → 1 3 5)

 

はじめのページを90度回転

※ページ指定の後にEをつけると90度回転

pdftk in.pdf cat 1E 2-end output out.pdf

 

すべてのページを180度回転

※ページ指定の後にSをつけると90度回転

pdftk in.pdf cat 1-endS output out.pdf

回転の指定はN:0 E:90 S:180 W:270 L:-90 R:+90 D:+180です。 Rが右回転、Lが左回転と考えれば問題ないです。 上記のページの指定と併せて利用できます。

5-25oddE (奇数ページの取得 して90度回転)

 

PDF 暗号化。権限はすべて許可

pdftk mydoc.pdf output mydoc.128.pdf owner_pw パスワード

 

PDF 暗号化。開いた時にパスワードをきかれる

pdftk mydoc.pdf output mydoc.128.pdf owner_pw パスワード user_pw パスワード

 

PDFのmetaデータなどをテキストファイルにアウトプット

pdftk mydoc.pdf dump_data output report.txt

感想

すごく強力なツールでした。 PHPなどから呼び出してpdf結合サービスなんてWEBアプリを作ってみるのも面白いかもしれないですね。