PDFの煮るなり焼くなりのメモ
処理別でPDFの扱い方を備忘としてまとめてみた。対象はQPDFとかPDFTK、MuPDF-tools、Poppler-utils、Ghostscript、libtiff-toolsといったものが入っている環境か。シェル環境があると便利なので*BSD/LinuxやWindowsでもCygwin、MinGWといったものを入れていると良い。
暗号化解除
% qpdf --decrypt in.pdf out.pdf
暗号化解除といっても、読み込みパスワードがかかっていない場合は制限していないのと同じでこれだけで何でもできるようになる。
PDFバージョン変更
% qpdf --force-version=1.4 in.pdf out.pdf
フリーソフトにおいては、PDFバージョンが1.4(Acrobat 5)以前にしか対応していないものがある。強制的にバージョンを1.4にすることで読み込みができるようになることが多い。
結合
% pdftk in1.pdf in2.pdf output out.pdf
Javascript除去
簡単に挙げられる方法としては、三個。
- Javascriptが動くブラウザー上でJavascript版のPDFDesigner (http://www.petitmonte.com/pdfdesigner/)で読み書きする
- Windowsやwine上でPDFPDFPDF.comなどのPDFDesignerシリーズのソフト(http://papy.world.coocan.jp/)で読み書きする
- Windows上でiTextFrontで読み込み書き出す(MSJVMの関係でwine上では動かない)
もし、iTextに親しんでいるなら、スクリプトを書く方法もある。なお、PDFJavascriptRemoverというiText関係のソフトがあるものの、扱い方がわからず。
テキストの抽出
もしPDFがLibreOfficeとか各種DTPソフトで作成されたものであるとか、OCRがかかっていて透明化テキストがついているとかであれば、Poppler-utilsで抽出できる。OCRが必要な場合はここでは対象外。
% pdftotext -enc UTF-8 in.pdf
画像の抽出
一括して抽出する場合はMuPDFのツール利用が簡単である。
% mutool extract input.pdf
もう一つは、Poppler-toolsのpdfimagesで
% pdfimages -png in.pdf out // PNGで抽出する場合
% pdfimages -j in.pdf out // JPEGで抽出する場合
% pdfimages -tiff in.pdf out // TIFFで抽出する場合
で抽出できる。pdfimagesの標準はpbm形式なので、上記のように標準的な形式で抽出するか、ImageMagickで変換すると扱い易くなる。
画像のPDF化
ImageMagickとpdftkを併用する、マルチページTIFFを作成してPDFに変換するといった各種の方法がある。
元のデータが200 ppiの反転した白黒のpbmをImageMagickとpdftkで変換する場合はこんな感じ。
% mogrify -units PixelsPerInch -density 200x200 -negative -format pdf in*.pbm
% pdftk in1.pdf in2.pdf output out.pdf
ImageMagick自体はマルチページの画像PDFを扱うことができるので、
% convert -units PixelsPerInch -density 200x200 -negative -format pdf in*.pbm out.pdf
で変換することもできるが、恐ろしくメモリーを消費するので推奨しない。
元データがTIFF(昔スキャンしたヤツとか)でマルチページTIFF経由でPDFに変換する場合は、libtiff-toolsを入れて
% tiffcp in1.tif in2.tif tmp.tif
% tiff2pdf tmp.tif -o out.pdf
という具合で良い。なお、このケースだと圧縮をかけていないので、モノクロならtiffcpで-c g4や-c g3とか、カラーならtiff2pdfのところで-jオプションをつける。
フォントの抽出
PDFではフォントを埋め込んでいることがあり、MuPDFやFontForge、PDF FontDecorder (http://papy.world.coocan.jp/p5.html#s3)には抽出機能がある。
一括して抽出する場合は画像抽出の時と同じオプションで、画像もフォントも一緒にできる。
% mutool extract input.pdf