Perl で PDF ファイルを分割、テキスト抽出する

CAM::PDF でページ分割とテキスト抽出

http://search.cpan.org/~cdolan/CAM-PDF-1.21/

結論から言うと、日本語PDFの抽出は文字化けしました(Ver. 1.21)。

CAM::PDF でページ分割

use CAM::PDF;
my $pbasepdf = CAM::PDF->new(‘mypdf.pdf’);
my $pageno = $pbasepdf->numPages();
print “$pageno pages.\n”;
for (1..$pageno){
my $pdf = $pbasepdf->copyObject($pbasepdf);
#my $text = $pdf->getPageText($_); #文字化け…
my $page = $pdf->extractPages($_); #複数ページも指定可(カンマ区切 or 範囲指定)
$page->cleanoutput(“mypdf_$_.pdf”);
}

CAM::PDF の特徴

  • プログラムからページ数が取得できる。
  • PDF::Extract で出たような「再構築…」というメッセージは出ない。
  • 変更可否などの設定ができるが、パスワード設定にバグがあり(?)、編集用パスワードのみを指定するなど、閲覧用パスワードと編集用パスワードの指定が異なるとページ分割ができない(真っ白のページができる)。つまり変更可否設定してもパスワードが掛けられない。閲覧パスワードと同じパスワードを掛ければOK。
  • メタデータ(文書タイトルなど)は分割前のものが引き継がれる。しかし指定はできない。