Как вызвать файл .pl внутри скрипта .cgi - PullRequest
0 голосов
/ 12 октября 2011

Я использую getpdftext.pl из CAM :: PDF, чтобы извлечь pdf и распечатать его в текст, но в моем веб-приложении я хочу вызвать этот getpdftext.pl внутри скрипта .cgi.Можете ли вы предложить мне, что делать или как действовать дальше.я попытался преобразовать getpdftext.pl в getpdftext.cgi, но он не работает.

Спасибо всем

это выдержка из моего сценария request_admin.cgi

my $filename  = $q->param('quote');
:
:
:
&parsePdf($filename);

#function to extract text from pdf ,save it in a text file and parse the required fields
sub parsePdf($)
{
    my $i;
    print $_[0];
    $filein = "quote_uploads/$_[0]";
    $fileout = 'output.txt';

    print "inside parsePdf\n";

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

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

    while(<IN>)
    {
        print "$i";
        $i++;
        print OUT;
    }

}

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Весьма вероятно, что

  • Среда вашего CGI-сценария не является достаточно полной для определения getpdftext.pl и / или
  • Пользователь веб-сервера не имеет разрешениявсе равно выполните его

Просмотрите журнал ошибок вашего веб-сервера и посмотрите, сообщает ли он какие-либо указатели о том, почему это не работает.

0 голосов
/ 12 октября 2011

В вашем конкретном случае, может быть проще и прямее использовать CAM :: PDF напрямую, который в любом случае должен был быть установлен вместе с getpdftext.pl.

У меня былпосмотрите на этот скрипт, и я думаю, что ваш parsePdf саб может быть так же легко записан как:

#!/usr/bin/perl
use warnings;
use strict;

use CAM::PDF;

sub parsePdf {
    my $filein = "quote_uploads/$_[0]";
    my $fileout = 'output.txt';

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

    my $doc = CAM::PDF->new($filein) || die "$CAM::PDF::errstr\n";
    my $i = 0;

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