парсинг pdf в perl - PullRequest
       2

парсинг pdf в perl

4 голосов
/ 07 октября 2011

Я пытаюсь извлечь некоторую информацию из PDF. Я пытаюсь использовать getpdftext.pl из модуля CAM::PDF. Когда я просто запускаю $~ getpdftext.pl sample.pdf, он выводит текст в формате PDF на стандартный вывод.

Но я думаю записать это в текстовый файл и разобрать необходимые поля в perl. Может кто-нибудь подсказать, как это сделать?

Но когда я пытаюсь вызвать pdftotext.pl внутри моего Perl-скрипта, я получаю No such file ошибку.

# программа для извлечения текста из 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 ]

3 голосов
/ 07 октября 2011

Вероятно, было бы легче заставить 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;
0 голосов
/ 07 октября 2011

См. perldoc -f open.Вы хотите взять выходной поток внешней команды и использовать его в качестве входного потока внутри скрипта Perl.Вот для чего нужен режим -|:

open my $IN, '-|', "getpdftext.pl $filein" or die $!;
while (<$IN>) {
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...