PDFをコマンドラインから編集できるPDFtk使い方メモ

PDFtkとは?

PDFを色々編集できる。具体的には...

  • PDFファイルを結合
  • 抽出
  • 回転
  • ページ毎に分割
  • 透かしやスタンプをいれる
  • パスワードロック(ユーザーパスワードやオーナーパスワード)
  • パスワードの解除
  • 添付ファイルをつける
  • 添付ファイルを取り出す
  • PDF文書のメタデータを編集

一番のメリットはやっぱり,コマンドラインツールなので,シェルスクリプト等のプログラムを用いて容易に自動化が可能。 大量のPDFファイルなどを処理するときにも便利!

ちなみにPDFではなく画像をコマンドラインから扱いたい場合にはImageMagickがとても便利です。 ImageMagickは↓の記事で解説してます。

インストール

基本的にはこちらからダウンロードしてインストール。

Ubuntuならapt-get、MacならHomebrew等からコマンド一つでインストールできますが,バージョンが少し古いので公式サイトからダウンロード推奨です。

$ sudo apt-get install pdftk    # Ubuntu等
$ brew install pdftk            # Mac

参考になるサイト

2つ目のサイトは,とても参考になりました。 (※ もう記事がありませんでした) 基本的には,↑のサイトを見れば分かります。ここではこれらのサイトの補足的なことをメモ。

入力ファイル名の指定方法

1. スペースで区切って複数指定

$ pdftk input1.pdf input2.pdf 操作 output output.pdf

2. ファイル名にハンドルを付けて指定

ハンドルを付けるとより柔軟で複雑な操作が可能。 スペースで区切って複数のファイルを指定した場合,指定した順番に操作が実行される。 但し,ハンドルを付けることでこの順番を入れ替えたり出来る。

$ pdftk A=input1.pdf B=input2.pdf 操作 output output.pdf

例) input1.pdfを180度回転させて、input2.pdfと結合

$ pdftk A=input1.pdf B=input2.pdf cat A Bsouth output output.pdf

3. ワイルドカードの指定

$ pdftk *.pdf 操作 output output.pdf
他にも
$ pdftk input_00??.pdf 操作 output 出力ファイル名

ページ結合・抽出・回転(cat,shuffle)

PDFファイルの結合が可能。と言いつつもページの抽出やページの入れ替え,回転なども出来る。 ページの範囲の指定はファイル名にハンドル(A=ファイル名, B=ファイル名...等)を付けておく必要有り。

具体例はこちら↓

// 1から10ページ目までを抽出
$ pdftk input1.pdf cat 1-10 output out.pdf
// 全てのページを90°回転
$ pdftk input1.pdf cat 1-endeast output out.pdf
// 5,11,20ページのみ抽出
$ pdftk input1.pdf cat 5 11 20 output out.pdf
// 5から25ページの奇数ページを抽出し,90°回転(ちなみにoddは奇数ページ,evenは偶数ページ)
$ pdftk input1.pdf cat 5-25oddwest output out.pdf
// 奇数ページを180度回転(shuffleは,ページを交互に配置しながら結合します)
$ pdftk A=input1.pdf shuffle Aoddsouth Aeven output out.pdf
// 結合する順番を入れ替える
$ pdftk A=input1.pdf B=input2.pdf cat B A output out.pdf
// ページを逆順に並べ替え
$ pdftk input1.pdf cat end-1 output out.pdf

ページ回転のオプションは↓のように行えます(PDFtkの最新バージョン使ってる場合)

  • north : 0°
  • south : 180°
  • east : 90°
  • west : 270°
  • left : -90°
  • right : +90°
  • down : +180°

left,right,downは相対的な角度です.

aptやbrewで古いバージョンのPDFtkでは、上のようにページ回転のオプションを指定するとエラーが発生しました。どうやら古いバージョンでは頭文字を大文字(north → N, south → S, ...)で記述するそうです。古いバージョンのPDFtkを使ってる人は注意してください.

ページ分割(burst)

入力ファイルをページ毎に分割して新しいPDFファイルを指定。

$ pdftk input.pdf burst
// ホームフォルダ直下にout_01.pdfのような形式で出力するには
$ pdftk input.pdf burst ~/out_%02d.pdf

Tips

PDFtkとか関係ないですが,Adobe ReaderでPDFファイルを開きたいなら↓のコマンドでOK. PDFtkを使うときには知っておくと何かと便利です。

$ acroread ファイル名

PDF構造解説

PDF構造解説