0

PDF を生成するために、TCPDF (最新バージョン – 6.0.023) を使用しています。ドキュメントのヘッダーにロゴを表示します (JPEG または PNG 形式)。「大きな」画像 (> 30KB) を使用すると、TCPDF が破損した PDF ファイルを生成することが判明しました。

画像を表示するコードは次のとおりです。

<?php
public function Header() {
    // $this->headerLeftLogo = '@' . $image;
    // $this->logoHeight = 8;
    $type = (...some check...) ? 'JPEG' : 'PNG';
    $this->Image($this->headerLeftLogo, $this->getX(), $this->getY(), 0, $this->logoHeight, $type);
}
?>

生成された PDF のソース コードを検査し、正常な PDF と破損した PDF を比較すると、破損した PDF ファイルはドキュメントの途中で終わっているように見えます。正常な PDF の最後に表示される一部の (読み取り可能な) 情報が、破損した PDF には存在しません。

PDF の生成中にエラーは表示されません。(すべての PHP エラーがオンになります。)

TCPDF の例 9 (大きな画像が表示される) を実行すると、問題は発生しません。

4

1 に答える 1

1

TCPDF に画像のサイズを変更させる必要があったことがわかりました。のパラメータを追加trueした後、スクリプトは正常に機能しました。$resizeImage()

具体的には、これは私が行った変更でした:

<?php
// Old:
$this->Image($this->headerLeftLogo, $this->getX(), $this->getY(), 0, $this->logoHeight, $type);
// New:
$this->Image($this->headerLeftLogo, $this->getX(), $this->getY(), 0, $this->logoHeight, $type, '', '', true);
?>
于 2013-08-26T20:29:08.353 に答える