我正在尝试从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;
}
答案 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>) {
...
}