使用 dompdf 的 pdf 图像中的错误

error in pdf image using dompdf

我必须在生成的 PDF 的每一页中显示一个徽标。虽然它在本地系统中运行良好,但它在服务器中引发以下异常:

1
Fatal error: Uncaught exception 'PDFlibException' with message 'Handle parameter or option of type 'image' has bad value 0' in /var/www/dev/subdomains/rfqms/httpdocs/sprintnineteen/system/plugins/dompdf/include/pdflib_adapter.cls.php:664 Stack trace: #0 /var/www/dev/subdomains/rfqms/httpdocs/sprintnineteen/system/plugins/dompdf/include/pdflib_adapter.cls.php(664): PDFlib->fit_image(0, 30, 746, 'boxsize={86 43}...') #1 /var/www/dev/subdomains/rfqms/httpdocs/sprintnineteen/system/plugins/dompdf/include/php_evaluator.cls.php(66) : eval()'d code(16): PDFLib_Adapter->image('http://rfqms.de...', 'jpg', 30, 3, 86.4, 43.2) #2 /var/www/dev/subdomains/rfqms/httpdocs/sprintnineteen/system/plugins/dompdf/include/php_evaluator.cls.php(66): eval() #3 /var/www/dev/subdomains/rfqms/httpdocs/sprintnineteen/system/plugins/dompdf/include/php_evaluator.cls.php(70): PHP_Evaluator->evaluate('??//$base_img_u...') #4 /var/www/dev/subdomains/rfqms/httpdocs/sprintnineteen/system/plugins/dompdf/include/renderer.cls.php(180): PHP_Evaluator->render(O in /var/www/dev/subdomains/rfqms/httpdocs/sprintnineteen/system/plugins/dompdf/include/pdflib_adapter.cls.php on line 664

经过一些分析,我发现在本地它使用 cpdf_adapter.cls.php 作为图像,而在服务器中它使用 pdflib_adapter.cls.php 作为图像。

我什至尝试了所有类型的图像,根据:

1
pdfLib tutorial Version 8.0.2 ---page # 166--- Inline images are only supported for imagetype=ccitt, jpeg, and raw. For other image types the inline option will silently be ignored.

那么,导致这个异常的问题是什么?

一些附加信息:

  • 本地 PHP 版本 5.3.0
  • 服务器 PHP 版本 5.2.16
  • dompdf 版本 0.5.2
  • DOMPDF_TEMP_DIR 具有 r/w/e 权限
  • 本地机器是windows vista
  • 服务器机器是linux

dompdf 中存在与通过 PDFLib 添加图像相关的错误。我不确定这个问题是否已经在即将发布的 0.6.0 版本中得到解决。支持组上有一个相关线程。如果您想继续使用 PDFLib,请查看我的上一篇文章,了解有关解决方法的信息。

另一种选择是告诉 dompdf 使用 CPDF。在 dompdf_config.inc.php 中,将 DOMPDF_PDF_BACKEND 设置为 "CPDF" 而不是 "auto" 或 "PDFLib"。