我使用PDF :: FromHTML從HTML生成PDF(因爲模塊的名稱會暗示):)爲什麼PDF :: FromHTML在從我的web應用程序調用時行爲有所不同?
我可以從命令行運行它並收到我的預期輸出 - 但是,當我在我的網絡應用中使用完全相同的代碼時,輸出看起來並不正確 - 文本出現在錯誤的地方,並非全部出現。
我在網絡應用程序和命令行中使用完全相同的輸入文件 - 從我的Web應用程序內部調用時出現的一些原因,它顯示的方式不同。
下面是代碼:
use PDF::FromHTML;
my $filename = '/tmp/backup.html';
my $font = 'Helvetica';
my $encoding = 'utf-8';
my $size = 12;
my $landscape = 0;
my $pdf = PDF::FromHTML->new(
encoding => $encoding,
);
my $input_file = $filename;
my $output_file = "$input_file.pdf";
warn "$input_file\n$output_file\n";
$pdf->load_file($input_file);
$pdf->convert(
Font => $font,
LineHeight => $size,
Landscape => $landscape,
);
$pdf->write_file($output_file);
該web應用程序的代碼是相同的,只是與該塊扔進的方法。
我已經在十六進制編輯器中查看了兩個生成的PDF文件,發現了不同之處。它們是相同的,直到嵌段,其意圖我無法理解......在該塊
良好的PDF內容:
/Length 302 >> stream
**binary data
endstream endobj
10 0 obj << /Filter [ /FlateDecode ] /Length 966
壞PDF內容:
/Length 306 >> stream
**binary data
endstream endobj
10 0 obj << /Filter [ /FlateDecode ] /Length 559
,你可以請參閱,這裏包含的內容的長度不同,包含在該流中的二進制數據(長度302與長度306之一)以及下一個流(長度966 vs 559之一)也不相同。
我不完全確定是什麼可能導致這種差異,我能想到的唯一的事情就是當我以用戶的身份在命令行上運行它時, web應用程序。但是,我不知道從哪裏開始調試。
只是爲了澄清,當你說'網絡應用程序'你的意思是哪個web服務器,例如:Apache mod_perl或哪一個? – NickZoic 2009-04-19 04:02:35