macOS でPDF分割(コマンドライン編)
スポンサーリンク
以前はpdftk というツールがHomebrew 経由で簡単にインストールできたみたいだが、現在はインストールできない。
開発元のサイト自体は存在しているし、Windows用のバイナリは配布されている。
多分、GCCがJavaのサポートを外したとか、諸事情が重なったんだろうと思う。
代替手段としてMuPDFというのを試してみる。
インストール
Homebrew はセットアップ済みという前提。MuPDFの本体は特に用はないのでスルーする。
$ brew install mupdf-tools
コマンド一発。
使い方
mutool
コマンドに続けてサブコマンドと引数を指定する形式。詳細はman mutool
で確認のこと。
mutool サブコマンド 入力PDF
サブコマンドによってオプションと引数の形式は異なる。
mutool command man page - mupdf | ManKier
対応している入力ファイルフォーマット
マニュアルページより。
PDFとXPSは理解できるがが他はPDFリーダーの仕事かと言われると疑問。便利なのはいいことだけど不思議。
対応している出力ファイルフォーマット
マニュアルページより。
- 画像ファイル系(pbm、pgm、ppm、pam,、png、tga、pwg、pcl、ps)
- ベクトル形式のフォーマット(SVG、PDF、 XML (debug trace)
- 構造家テキスト系(plain text、HTML、structured text (as xml))
知らないファイル形式がいくつかあるが、使わないのでスルーする。
きになる場合は、Wikipedia を参照(特に末尾の表)。
サブコマンドの一覧
サブコマンドは以下のとおり。一部のサブコマンドを除き、カンマ区切り or ハイフンでのページ範囲指定可能。
- draw : PDF を1ページずつ画像に変換
- clean : 壊れたPDFの修復、画像データの圧縮・展開、不要なページの除去
- extract : PDFに含まれる画像データやフォントを取り出す
- info : PDFに含まれるリソースの情報を表示する
- create : “Special comments” を含むテキストファイルから新しいPDFを作成する
- pages : PDF内のページについてサイズや方向などの情報を表示する
- poster : PDFの各ページをM x N のタイル上に分割する(名前の通り学会のポスター発表用?)
- show : PDFに埋め込まれたデータを出力する
- run : 引数に指定されたJavascript を実行する
- convert : PDFから他形式に変換(EPUBなど)
- merge : 複数のPDFを結合して新しいPDFファイルを作成する
具体例
全ての機能を試すのはしんどいので必要なやつだけ。
特定ページを抜き取る
サブコマンドの使い分けがはっきりしないが、1ページ1ファイルで画像化したいならmutool draw
、一つのファイルにしたいならmutool clean
か。
指定したページを1ページずつ画像として出力
入力PDFから特定のページを画像として出力する場合はdraw
サブコマンドを使う。出力ファイルが複数になる場合は"%d"形式で連番の数字フォーマトをコントロールできる。
実行例:
$ mutool draw -o page%d.png input.pdf 1,2,3
以下のように1ページ1ファイルで出力される。
$ ls *.png page1.png page2.png page3.png
ビットマップ系の画像データにする場合は日本語のPDFでも動作する。ただし、下記のような警告が表示される。
warning: not building glyph bbox table for font 'IQKVNB+HiraMinProN-W3' with 22921 glyphs
出力ファイル形式をPDFにした場合は1つのファイルに出力される。この場合、日本語フォントの埋め込まれたPDFでは上手くいかない。
特定のページだけを抜き出して新しいPDFを作成
mutool clean
に続けて「入力ファイル名」、「出力ファイル名」、「ページ範囲」を指定する形式。細かいオプションはマニュアル参照。
実行例:
$ mutool clean input.pdf output.pdf 1,2,3
特にオプションを指定しない限り日本語のフォントが埋め込まれていても問題ない。
まとめ
他の機能も機会があれば説明を追加するかも。
とりあえずここまで。