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 (大きな画像が表示される) を実行すると、問題は発生しません。