私は、住所とその他のいくつかの細かい点を除いて同じである大量のページ (文字) を扱っています。PDF の作成を最も遅らせているのは、すべてのページに含めているロゴ画像だと思います (かなり小さいですが)。
ロゴをキャッシュすることで、プロセスをもう少しスピードアップしたいと思っています。つまり、ファイルを一度ロードして変数に保存し、毎回画像をロードする代わりにTCPDFにそれを使用させます。TCPDF は「PHP 画像データ ストリーム」をロードできます。例は次のとおりです。
$imgdata = base64_decode('iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABlBMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDrEX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==');
$pdf->Image('@'.$imgdata);
ただし、ファイルからこのような画像ストリームを作成する方法がわかりません。
私のロゴは小さな (4kB) PNG ファイルです。「@」を前に付けて使用readfile($file)
して送信すると$pdf->Image
、エラーが発生します-すでにchmod 777に設定されているキャッシュフォルダーに関する何か(これはテストサーバーです-ライブサーバーで適切な権限に取り組みます)。私も試しbase64_encode
てみましたが、うまくいかなかったと思います。
これを行う方法について何か考えはありますか?
PS: PDF に含めるページが多いほど処理が遅くなることに既に気付いたので、適切な中間 (ファイルごとに現在の 500 ページではなくおそらく 200 ~ 250 ページ) を見つけます。
ありがとう!