1

私は、住所とその他のいくつかの細かい点を除いて同じである大量のページ (文字) を扱っています。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 ページ) を見つけます。

ありがとう!

4

1 に答える 1

2

sourceforge の TCPDF フォーラム ( sourceforge forum post )に同じ質問を投稿し、TCPDFの作成者が回答しました。

彼は、画像は内部でキャッシュされると述べましたが、画像の処理が必要な場合は、XObject()テンプレート システムを使用することを提案しています ( TCPDF サイトの例 62を参照)。

動作するようになるまでしばらく時間がかかりました (なぜ最初はうまくいかなかったのかはまだわかりません) Image()。各500ページのファイル。

XObject()との間に速度の向上はまったくなくImage()XObject()実際には、結果のファイルがほんの少しだけ大きくなるように見えました (1.2MB ファイルで 2.5kB)。

これは私の元の質問 (を使用して TCPDF で直接使用できる PHP データ ストリームを作成する方法) に直接答えることはありImage('@'.$image)ませんが、私が本当に知る必要があることを教えてくれXObject()ます。私の状況に有利です。

于 2013-04-02T18:33:48.003 に答える