使用 dompdf 生成 pdf 图像时出错
我必须在生成的 PDF 的每一页中显示徽标。虽然它在本地系统中工作正常,但它在服务器中抛出以下异常:
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
用于图像。
我什至尝试了所有类型的图像:
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
I have to display a logo in every page of a generated PDF. Though it works fine in the local system, it throws following exception in the server:
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
After some analysis I found that in local it uses cpdf_adapter.cls.php
for image, where as in server it uses pdflib_adapter.cls.php
for image.
I even tried for all the types of images according to:
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.
So, what is the problem that leads to this exception?
some additional info:
- local PHP Version 5.3.0
- server PHP Version 5.2.16
- dompdf version 0.5.2
- DOMPDF_TEMP_DIR has r/w/e permission
- local machine is windows vista
- server machine is linux
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
dompdf 中存在与通过 PDFLib 添加图像相关的某个错误。我不确定即将发布的 0.6.0 版本是否已解决该问题。 支持小组中有相关帖子。如果您想继续使用 PDFLib,请查看我的上一篇文章,了解有关解决方法的信息。
另一种选择是告诉 dompdf 使用 CPDF。在 dompdf_config.inc.php 中,将 DOMPDF_PDF_BACKEND 设置为“CPDF”,而不是“auto”或“PDFLib”。
There was a bug in dompdf at some point related to adding images via PDFLib. I'm not sure if the issue has been addressed yet or not for the upcoming 0.6.0 release. There is a relevant thread on the support group. Take a look at my last post there for information on a work-around if you want to continue using PDFLib.
The other option would be to tell dompdf to use CPDF. In dompdf_config.inc.php set
DOMPDF_PDF_BACKEND
to "CPDF" instead of "auto" or "PDFLib".