CAD-KAS PDF Editorを利用したPDF画像抽出

画像梱包(PdfBuiltInPicture)で画像直抜きを試みたときに応答しなくなったり「リストのインデックスが範囲を超えています」となるケースが多い。しかしそこまで多くのPDF作成者がプロテクトを頑張っているとは考えにくく、古いソフトである画像梱包が最近のPDFに対応できてないだけなのではないか。というわけで回避手順の一つを示す。簡単に書くと「PDF編集ソフトで開いて古いフォーマットで保存する」、これだけ。
CAD-KAS PDF Editor デモ版(無料)
オプションから日本語を選択可能。デモ版なので色々制限もあり、ここで行なうことは他のPDF編集ソフトでもできるかも知れないので、他のソフトを試してみてもいいと思われる。

  1. PDF Editorで目的のPDFファイルを開く
  2. 「セキュリティ」タブを開き「PDFファイルを暗号化しない」を選択
  3. 「PDFファイルを保存する」タブを開きPDFのバージョンで「1.2(Acrobat3以降)」などの古いバージョンを選択、表示は「ページのみ」を選択、「名前をつけて保存」をクリックして保存

以上の手順で保存したPDFからは、画像梱包ですんなり画像抽出できることがある。デモ版で保存したPDFを画面表示すると Changed with the DEMO VERSION of... といった文字列がページ上に表示されるが、画像自体が加工されているわけではないので、画像梱包による抽出画像には影響しない。
なお画像梱包が画像ファイルに付加する番号はPDFに格納されていた順番に過ぎず、PDF文書として表示したときの順番とは必ずしも一致しない。ひどいときは逆順になっていることもある。またPDFファイル内部には含まれているがPDF文書には表示されない画像が抽出される場合もある。なので抽出された順番そのままで画像を保存するのではなく、PDFの表示との差異を比較してチェックしておいた方が良い。ファイル名の連番の一括変更などの操作にはファイル名一括変更をお勧めしておく。以前はFlexible Renamerを利用していたが不具合修正への消極的な姿勢に不安があり、乗り換えることにした。


以上の手順を用いても依然「リストのインデックスが範囲を超えています」となる場合、特定のページに問題がある場合がある。PDF Knifeを利用してページをばらし、1ページずつ画像梱包に食わせてみよう。正常に抽出されるページはそのままでOK。「リストのインデックスが範囲を超えています」が出るページは構造か何かに問題があると思われる。目的のページを別のPDFにコピーすることで抽出可能にする手順を示す。

  1. 該当のPDFをPDF Editorで開く
  2. 画像抽出したいページを左クリックで選択
  3. 右クリックメニューで「他のPDFファイルにコピー」
  4. ファイル→空の新しいPDFファイル(もしくはCTRL+N)で新たなPDFを編集開始
  5. ページ上の適当な場所を左クリックで選択
  6. 右クリックメニューで「他のPDFファイルから貼り付け」
    • これでそのページが目的のページで上書きされる。このとき画像がページからはみ出していたとしても問題ない。
  7. PDFファイルを保存し、画像梱包で画像抽出


以上の手順を尽くしても抽出できないページがあったり、もしくはdatファイルとして抽出され解析ツールでも画像ファイルとして認識されない場合は、そのページに関しては直抜きはあきらめて以前の手順でPnM化してからPNG等に変換しよう。