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

PDF::API2 でページ分割とメタ情報設定

http://search.cpan.org/~areibens/PDF-API2-0.71.001/

PDF::API2 でページ分割とメタ情報設定

use PDF::API2;
use uft8; #文書メタ情報はフラグの立った UTF-8 文字列で指定
my $pdf = PDF::API2->open(‘mypdf.pdf’);
my $pageno = $pdf->pages;
print “$pageno pages.\n”;
for (1..$pageno){
my $splited = PDF::API2->new;
my $page = $splited->importpage($pdf,$_); # オリジナルの $_ ページ目を分割の1ページ目に
my %h = $splited->info(
‘Author’ => ‘書き手の名前’,
‘CreationDate’ => “D:20080911000000+01’00′”,
‘ModDate’ => “D:YYYYMMDDhhmmssOHH’mm'”,
‘Title’ => “これはタイトル”,
‘Subject’ => “これはサブタイトル:ページ$_”,
‘Keywords’ => “キーワード”
);
$splited->saveas(“mypdf_$_.pdf”);
$splited->end;
}
$pdf->end;

PDF::API2 の特徴

  • プログラムからページ数が取得できる。
  • PDF::Extract で出たような「再構築…」というメッセージは出ない。
  • セキュリティ情報の設定ができない。
  • メタデータ(文書タイトルなど)の設定ができる。

まとめ

  • ひとに提供するPDFを作成するのは真面目にPDF仕様を勉強しないと厳しい。
  • 出来上がったPDFからページごとにテキスト抽出して何かに使うのであれば、モジュールのいずれか+xpdf あたりでさくっとできるか。