2015-10-16 3 views
0

Задача: Добавьте некоторые данные (скажем LocalTime) в PDF файл (Файл PDF содержит форму)обработки PDF-файлы с Javascript усиленных форм с использованием Perl

Пример файла:http://www.immihelp.com/nri/forms/passport-application-form.pdf

У меня есть до сих пор пробовал 3 популярных модуля. PDF::API2, CAM::PDF и PDF::Reuse.

Попробуйте 1:PDF::API2

#!/usr/bin/perl 
use strict; 
use warnings; 
use PDF::API2; 
my $pdf = PDF::API2->open('form.pdf'); 

Error: The PDF file uses a cross-reference stream, which is not yet supported (see Know n Issues in the PDF::API2 documentation) at C:\Perl\site\lib/PDF/API2/Basic/PDF/ File.pm line 1048.

Попробуйте 2:CAM::PDF

#!/usr/bin/perl 
use strict; 
use warnings; 
use Data::Dump qw(dump); 
use CAM::PDF; 
my $pdf = CAM::PDF->new('form.pdf') or die "failed"; 
$pdf->appendPageContent(1, localtime); 
$pdf->save(); 

Error: This stream is too complex for me to write... Giving up

Я проверил код и нашел этот модуль не поддерживает сложные S treams в данный момент

From PDF.pm

# TODO: Handle more complex streams ... 
die "This stream is too complex for me to write... Giving up\n"; 

Когда я попытался cleanoutput метод вместо save он работал правильно, но при открытии PDF-я получаю ниже сообщение. Я также заметил, что теперь я не могу ввести данные в форму.

Полный URL изображения: http://i.stack.imgur.com/anAMW.png

enter image description here

Попробуйте 3:PDF::Reuse

#!/usr/bin/perl 
use strict; 
use warnings; 
use PDF::Reuse; 
prFile('output.pdf'); 
prForm("form.pdf"); 
prPage(); 
prText(100,100, localtime); 
prEnd(); 

Выпуск: Приведенный выше код правильно добавляет данные, но 2-ю страницу оригинала PDF нет дольше доступно в output.pdf.

Я заметил, что Мерлин (Randal L Schwartz) также задал аналогичный вопрос о perlmonks (http://www.perlmonks.org/?node_id=556764).

ответ

0
#!/usr/bin/perl 

use strict; 
use warnings; 
use PDF::Reuse; 

prFile('output.pdf'); 

my $left_page = 1; 
my $page_number = 1; 

while ($left_page) { 
    prForm("form.pdf", $page_number); 
    # Fill data 
    prText(100, 100, localtime) if $page_number == 1; 

    $left_page = prSinglePage("form.pdf"); 
    $page_number ++ 
} 

prEnd(); 

 Смежные вопросы

  • Нет связанных вопросов^_^