Coherent PDFでPDFを分割・結合してみる
スポンサーリンク
PDFの分割・結合ネタの続き。と言うか落穂拾いみたいなもの。
試すだけ試してみました。
Coherent PDF (cpdf)、楽ができるかと思いましたが期待したようには動作せず。
PDFの目次データ(いわゆる「しおり」、PDFの用語で言うところのdocument outline)の扱いは完全ではないという結果。
Coherent PDFについて
イギリスのCoherent Graphics Ltd. という会社によって開発されている多機能PDFツール。プログラミング言語はOCaml。
会社のドメインはあるが製品の紹介ページとブログ以外にWebページは見つけられず。
リポジトリ:johnwhitington/cpdf-source: PDF Command Line Tools Source
とにかくライセンスが難点。個人で試すか、評価用に使う場合はフリーだけどそれ以外はライセンスの購入が必要。
参考:本を読む cpdfがpdftk代替として高機能だけど自分の用途には使えなかった
入手
ライセンスの関係であくまでも個人で使う範囲のみ。
"Download pre-built tools now"というリンクをクリックしてダウンロード。
Zipを回答するとそれぞれのOS用のバイナリがまとめて格納されている。macOSは"OSX-Intel"。
cpdf
というファイルがあるので適当な場所にコピーする。
使い方
日本語の説明は以下のサイトが詳しい。
基本的には、
$ cpdf [operation] <input-pdf> -o <output-pdf>
という形式。引数は以下の通り。
- [operation] : PDFに対する操作
- <input-pdf> : 入力ファイル名(複数指定可)
- <output-pdf> : 出力ファイル名
この記事では-merge
オプションのみ扱う。
PDFのマージ
過去記事と同じく、某雑誌の総集編から特定の連載記事を抜き出したい。
コマンドの構文は以下のように。
$ cpdf -merge input_1.pdf [page range] input_2.pdf [page range] .... -o output.pdf
「とれたてRuby」という特集を取り出したいとする。ページ範囲は下記の通り。ページ範囲の特定方法については過去記事を参照。
- webdb_vol96.pdf 132-139
- webdb_vol97.pdf 147-154
- webdb_vol98.pdf 142-149
- webdb_vol99.pdf 142-149
- webdb_vol101.pdf 156-161
実行結果
$ cpdf-binaries-master/OSX-Intel/cpdf -merge webdb_vol96.pdf 132-139 webdb_vol97.pdf 147-154 webdb_vol98.pdf 142-149 webdb_vol99.pdf 142-149 webdb_vol101.pdf 156-161 -o latest_ruby2.pdf failure in merge_bookmarks Pdf.PDFError("Pdf.getnum: not a number")
failure in merge_bookmarks Pdf.PDFError("Pdf.getnum: not a number")
というエラーメッセージが表示される。
メッセージにあるとおり、ファイルが生成されるがBookmark(s)(目次 or しおり)部分が正しく処理できていない。
目次データ(document outline)がマージされず、1番目の入力ファイルのデータそのまま。エラーメッセージからしてWEB+DB PRESSの総集編PDFに遷移先のページ番号がセットされていない見出し項目があるのが原因だろうと思うがはっきりしない。
-raw
、-utf8
オプションを指定しても結果は同じ。
まとめ
pdftk
の代用品としてはちょっとイレギュラーに対して弱いのかなという印象。
某雑誌のPDFがよろしくない可能性もなきにしもあらず。なのでPDFの仕様としてdocument outline(上記のエラーメッセージのBookmark )の形式についてはちょっと確認した方がいいとは思っていたり 。
ただ、個人的にはライセンス面からしてもCoherent PDFは使わないだろうと思います。
他のコマンドラインツールかライブラリの組み合わせでどうにかするのが性に合っているので。