【问题标题】:Image error in DOMPDF for ZF2ZF2 的 DOMPDF 中的图像错误
【发布时间】:2014-07-06 15:04:22
【问题描述】:

大家好,欢迎,抱歉我的英语不是我的主要语言。我也是 Zend Framework 2 的初学者。 当我尝试在我的网页(带有 apache2 的虚拟主机,桌面中的文件夹)中显示图像时,我在 ZF2 中遇到了 DOMPDF 问题。例如:

<img src="/home/luifer/logo_uca.png" alt="logo_uca" />

出现错误:

[Sun May 18 12:28:45.023452 2014] [:error] [pid 7195] [client 127.0.0.1:57089] PHP 致命错误:未捕获的异常 'DOMPDF_Exception' 带有消息 'No block-level parent成立。不好。' 在 /home/luifer/Desktop/zf2-tutorial/vendor/dompdf/dompdf/include/inline_positioner.cls.php:37\n堆栈跟踪:\n#0 /home/luifer/Desktop/ zf2-tutorial/vendor/dompdf/dompdf/include/frame_decorator.cls.php(700): Inline_Positioner->position()\n#1 /home/luifer/Desktop/zf2-tutorial/vendor/dompdf/dompdf/include/ inline_frame_reflower.cls.php(36): Frame_Decorator->position()\n#2 /home/luifer/Desktop/zf2-tutorial/vendor/dompdf/dompdf/include/frame_decorator.cls.php(711): Inline_Frame_Reflower-> reflow(NULL)\n#3 /home/luifer/Desktop/zf2-tutorial/vendor/dompdf/dompdf/include/page_frame_reflower.cls.php(123): Frame_Decorator->reflow()\n#4 /home/luifer /Desktop/zf2-tutorial/vendor/dompdf/dompdf/include/frame_decorator.cls.php(711): Page_Frame_Reflower->reflow(NULL)\n#5 /home/luifer/Desktop/zf2-tutorial/vendor/dompdf/ dompdf/include/dompdf.cls.php(949): Frame_Decorator->reflow()\n#6 /home/luifer/Desktop/zf2-tutorial/vendor/dino/dompdf-module/src/ in /home/luifer/桌面/zf2-教程/ven dor/dompdf/dompdf/include/inline_positioner.cls.php 在第 37 行

当我在浏览器上手动打开同一页面时(用浏览器右键单击打开页面),图像会显示在页面中。

以防万一,我的控制器功能:

    public function extraordinarioAction()
{
    //quitar de la bd

    $pdf = new PdfModel();

    return $pdf;

}

我的视图页面是 extraordinario.phtml,上面有一个 html 页面。我尝试了一个带有加载图像的简单页面,但没有显示任何内容,只是一个带有此错误的空白页面。

有人知道如何解决这个问题吗?我已经做了一些事情,比如启用 mbstring

有什么想法吗?并提前致谢。

【问题讨论】:

  • 您能说明一下您的设置吗? No block-level parent found 消息通常表示没有将 HTML 传递给 dompdf。可能是较早版本的 dompdf 存在问题,也可能是您将未初始化/空数据传递给 dompdf。

标签: php zend-framework2 dompdf


【解决方案1】:

根据其他答案:可能会因为 DomPDF 无法读取文件而引发此问题。由于您在 Web 应用程序中运行 DomPDF,因此 php 可能拥有该进程(例如 www-data)。该用户应该对您要读取的图像具有读取权限。

另一个问题是您在/home/luifer 中有图像。有时其他用户无法读取用户目录。

所以:您最好的选择是将图像放置在共享位置(例如,/var/www 中的某个位置)。否则,请确保该文件对其他人是可读的 (chmod a+r logo_uca.png) 并且所有父目录对其他人都是可执行的 (chmod a+x /home/luifer)。请检查每个目录,您说“桌面中的文件夹”,因此如果您的文件放在/home/luifer/Desktop 中,请同时检查Desktop 文件。

【讨论】:

  • 非常感谢您的帮助!抱歉耽搁了。
【解决方案2】:

根据可以在此处找到的 dompdf 文档: https://code.google.com/p/dompdf/wiki/FAQ

它说“这应该在 0.4.1 及更高版本中修复。错误是由 parse_url() 认为 'c:\' 中的 'c' 是一个协议引起的。版本 0.4.1 解决了这个问题. 另一个可能的问题是文件上传不正确。请尝试重新上传文件。"

希望对您有所帮助。

【讨论】:

  • 路径 /home/ 表示 Unix 系统,而不是带有 `C:` 的 Windows
  • 酷那又怎样...如果您阅读完整答案,您会注意到文档给出了两个原因,Another possible issue...
  • 如果是这样,我想那会是一个更好的答案
猜你喜欢
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 2013-10-25
  • 1970-01-01
  • 2016-09-21
  • 2018-12-10
  • 1970-01-01
相关资源
最近更新 更多