1

PDF::FromHTML を使用して HTML から PDF を生成しています (モジュールの名前が示すように) :)

コマンドラインから問題なく実行でき、期待どおりの出力を受け取ることができます-ただし、Webアプリでまったく同じコードを使用すると、出力がまったく正しく見えません-テキストが間違った場所に表示され、表示されませんそのすべてが現れています。

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 アプリのコードは同じですが、そのブロックがメソッドにスローされているだけです。

生成された 2 つの PDF ファイルを 16 進エディターで調べたところ、違いが見つかりました。意味が分からないブロックまでは同じです...

そのブロックの適切な 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 対 559) に含まれるバイナリ データも異なります。

この不一致の原因は完全にはわかりません。考えられる唯一のことは、これをコマンドラインでユーザーとして実行している場合と、Web アプリから実行している場合の環境の違いです。ただし、どこからデバッグを開始すればよいかわかりません。

4

4 に答える 4

1

いくつかの提案:

  • PDF::FromHTML は PDF::Writer を使用し、これは PDF レンダリング ライブラリをプラグインとして使用します (オプションは PDFLib とその他のものだと考えてください)。同じバージョンのライブラリをプラグインとして利用できますか?
  • HTML 入力ファイルにアップロードしていない CSS ファイルが含まれていますか?
  • 他の PDF::FromHTML 変数を設定してみてください: PageWidth、PageResolution、PageSize など

出力テキストの順序が異なるか、それとも単に位置が異なるだけですか? それが位置である場合は、使用されているライブラリ(PDFLibなど)が2つの環境間で異なるデフォルトを選択する可能性があるため、PageWidthなどを設定してみてください。注文が間違っている場合、私にはわかりません。

投稿した 2 つの PDF ブロックは実際にはあまり表示されません。圧縮されたセクションのサイズが異なることを示しているだけです。どちらの例でも、実際には構文的に問題はありません。

于 2009-04-15T20:13:07.553 に答える
0

エンコーディングに問題があるのではないでしょうか?ヘッダーを見てください。

于 2009-04-17T07:02:42.863 に答える
0

Web サーバーを実行しているユーザーと、そのユーザーの環境変数がどのようなものかをよく調べます。また、ディレクトリに対するユーザーのアクセス許可にも注意してください。また、Linux ボックスの SElinux など、Web サーバーのユーザーを制限するものは他にありますか?

于 2009-04-17T21:12:00.310 に答える