我正在处理大量相同的页面(字母),除了地址和其他一些次要细节。我相信最能减慢 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 中包含的页面越多,它变得越慢,所以我会找到一个好的中间件(每个文件可能 200-250 页而不是当前的 500 页)。
谢谢!