在perl中解析pdf

时间:2011-10-06 22:28:28

标签: perl parsing pdf

我正在尝试从pdf中提取一些信息。我正在尝试使用getpdftext.pl模块中的CAM::PDF。当我运行$~ getpdftext.pl sample.pdf时,它会生成pdf到stdout的文本。

但我正在考虑将其写入文本文件并解析perl中的必填字段。有人可以指导我如何做到这一点吗?

但是当我尝试在perl脚本中调用pdftotext.pl时,我收到No such file错误。

#program从pdf中提取文本并将其保存在文本文件中

use PDF;

use CAM::PDF;

use CAM::PDF::PageText;

use warnings;

use IPC::System::Simple qw(system capture);

$filein = 'sample.pdf';                                                                   
$fileout = 'output1.txt';  

open OUT, ">$fileout" or die "error: $!";

open IN, "getpdftext.pl $filein" or die "error :$!" ;

while(<IN>)
{
    print OUT $fileout;
}

2 个答案:

答案 0 :(得分:3)

让getpdftext.pl做你想做的事可能会更容易。

使用getpdftext.pl中的代码,这个(未经测试的代码)应该将pdf输出到文本文件。

my $filein = 'sample.pdf';                                                                   
my $fileout = 'output1.txt';  

my $doc = CAM::PDF->new($filein) || die "$CAM::PDF::errstr\n";
open my $fo, '>', $fileout or die "error: $!";

foreach my $p ( 1 .. $doc->numPages() ) {
    my $str = $doc->getPageText($p);
    if (defined $str) {
       CAM::PDF->asciify(\$str);
       print $fo $str;
    }
}

close $fo;

答案 1 :(得分:0)

perldoc -f open。您希望获取外部命令的输出流,并将其用作Perl脚本中的输入流。这就是-|模式的用途:

open my $IN, '-|', "getpdftext.pl $filein" or die $!;
while (<$IN>) {
   ...
}