Подача объединенного PDF в браузер с помощью библиотеки CAM::PDF

РЕДАКТИРОВАТЬ:

Я снова изменил свой вопрос:

Я использую эту библиотеку для работы с файлами PDF.

Я использую этот код для передачи вывода в браузер:

#!perl
use strict;
use warnings;

use lib "..\\mymodules\\CAM-PDF-1.57\\lib";

use CAM::PDF;
my $pdf = CAM::PDF->new('doc1.pdf');

# append the other file
my $anotherpdf = CAM::PDF->new('doc2.pdf');

$pdf->appendPDF($anotherpdf);

print "Content-Type: application/pdf\n";
print "Content-Disposition: inline\n\n";

print "Content-Transfer-Encoding: binary\n";
print "Accept-Ranges: bytes\n\n";

$pdf->output();

Результат:

Я получаю только первый файл PDF, загруженный в браузере.

Задача решена:

Мне пришлось добавить $pdf->clean(); перед командой $pdf->output();, и все работает отлично. :)


person Yaron    schedule 12.03.2012    source источник


Ответы (1)


Вы сказали, что нет переменной TEMP, но ваш код использует ее:

$pdf->cleanoutput($ENV{"TEMP"} . '\\out1.pdf');

Попробуйте установить для него какое-то значение (я предполагаю, что вы используете окна)

$ENV{'TEMP'}='c:\tmp';
mkdir($ENV{'TEMP'});
die "$ENV{'TEMP'} not exists" if ! -d $ENV{'TEMP'};
$pdf->cleanoutput($ENV{"TEMP"} . '\\out1.pdf');

Почему вы используете // в каком-то пути? Например: используйте lib "..\mymodules\CAM-PDF-1.57\lib"; В операторе use lib всегда используйте полный путь.

person user1126070    schedule 13.03.2012
comment
Привет. Спасибо. Предполагается, что этот код запускается с компакт-диска, и требуется не записывать его на локальный компьютер. Итак, я хочу найти способ использовать папку Windows% TEMP% или другие решения. Я не могу решить создать папку самостоятельно. Спасибо - person Yaron; 14.03.2012