【问题标题】:error in pdf image using dompdf使用 dompdf 的 pdf 图像中的错误
【发布时间】:2011-06-22 18:34:54
【问题描述】:

我必须在生成的 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

【问题讨论】:

    标签: image pdf dompdf


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢老板。我非常感谢您对社区的承诺。将 DOMPDF_PDF_BACKEND 设置为“CPDF”后,上述问题的任何解决方法。但它在服务器中产生了另一个问题。线程链接中给出的解决方案对我不起作用。错误如下遇到了PHP错误严重性:警告消息:file_get_contents(myurl/logos/logo.png)[function.file-get-contents]:打开流失败:连接超时文件名:lib/class.pdf.php行号:4334
    • 总是乐于提供帮助。该消息表示超时,“myurl/logos/logo.png”是用于本文目的的一些占位符文本吗?您是否尝试过来自其他网站或通过本地文件系统的图像?
    • 是的 myurl/logos/logo.png 是占位符,我已经尝试了来自本地文件系统的图像。我认为这只是由于路径不正确。虽然上面的 url 直接在浏览器上显示了图像,但它不会在 pdf 上加载它。
    • 所以占位符是一个完整的 URL,包括域?我不确定为什么 DOMPDF 如果它在 Web 浏览器中工作会遇到超时问题,除非服务器在查找域时遇到问题。 PHP 设置 allow_url_fopen 是否设置为 true?您可以尝试创建一个单独的 PHP 脚本,其唯一目的是使用 file_get_contents() 打开文件吗?这至少可以让我们知道这是 dompdf 还是 PHP 问题。
    猜你喜欢
    • 2015-01-03
    • 2013-10-25
    • 2014-07-06
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多