2011-10-06 3 views
4

pdf에서 일부 정보를 추출하려고합니다. CAM::PDF 모듈의 getpdftext.pl을 사용하려고합니다. $~ getpdftext.pl sample.pdf을 실행하면 stdout으로 pdf 텍스트가 생성됩니다.perl에서 pdf 구문 분석하기

그러나 나는 이것을 텍스트 파일에 작성하고 펄에서 필수 필드를 분석 할 생각이다. 누군가 이걸 어떻게 할 수 있는지 안내해 주시겠습니까?

하지만 내 펄 스크립트 안에 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

perldoc -f open을 참조 텍스트 파일로 저장합니다. 외부 명령의 출력 스트림을 가져 와서 Perl 스크립트 내에서 입력 스트림으로 사용하려고합니다. 아마도 당신이 원하는 것을 할 getpdftext.pl을 할 쉬울 것

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

감사합니다 mob, - | 옵션이 도움이되었습니다 – sandyutd

3

: 그건의 -| 모드가 무엇인지입니다.

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

고맙습니다 AFresh – sandyutd

+0

당신은 오신 것을 환영합니다. 원한다면 파일로 인쇄하는 대신 텍스트로 직접 작업 할 수도 있습니다. 'my $ docstr = ''과'print $ fo $ str;'을'$ docstr. = $ str; '으로 변경하고'close $ fo;'. – AFresh1

관련 문제