【问题标题】:Dompdf is not rendering imageDompdf 不渲染图像
【发布时间】:2014-08-21 18:42:28
【问题描述】:

我正在使用 DOMPDF 库在运行时将 HTML 转换为 PDF。但是,我面临与图像相关的问题。系统在我渲染 HTML 代码时显示图像,但当我将其转换为 PDF 时,它会将所有图像替换为“broken_image.png”。我已经放置了完整的图片网址(如下所示),但它仍然不适合我:/。以下是示例图片网址:

<img src='http://img.uksoccershop.com/images/man-utd-gk-away-shirt-2012-13.jpg'/>

谁能告诉我如何解决这个问题。提前致谢。

【问题讨论】:

  • 您使用的是 0.6.1 吗?如果是这样,并且可以通过您的 Web 服务器访问 dompdf,请浏览到 dompdf/www/setup.php 并查找任何危险信号。
  • 根据您到目前为止发布的内容,我猜测可能 allow_url_fopen 设置为 false。您是否收到任何 PHP 错误(例如在您的日志文件中)?

标签: php html dompdf


【解决方案1】:

要为 DOMPDF 启用远程图像,您必须更改配置 dompdf_config.inc.php 查看第 284 行附近:

def("DOMPDF_ENABLE_REMOTE", false);

这应该设置为true。还要确保在第 103 行附近定义的临时目录是可写的:

def("DOMPDF_TEMP_DIR", sys_get_temp_dir());

【讨论】:

  • 感谢您的回复。我已经将 DOMPDF_ENABLE_REMOTE 设置为 true,但是在为它定义的方法中没有得到任何临时目录路径: function sys_get_temp_dir() { if (!empty($_ENV['TMP'])) { return realpath($_ENV[' TMP']); } if (!empty($_ENV['TMPDIR'])) { return realpath( $_ENV['TMPDIR']); } if (!empty($_ENV['TEMP'])) { return realpath( $_ENV['TEMP']); } $tempfile=tempnam(uniqid(rand(),TRUE),''); if (file_exists($tempfile)) { unlink($tempfile);返回真实路径(目录名($tempfile)); } } 这里没有定义临时目录。请告诉我临时目录路径?
  • 临时文件夹怎么样?
  • 你说的是服务器的临时文件夹还是项目的临时文件夹?在这两种情况下,我都将权限设置为可写,但它仍然无法正常工作
  • DOMPDF_TEMP_DIR 中定义的临时文件夹。在我的项目中,我似乎已将此值调整为getcwd().'/tmp',因为它不适用于sys_get_temp_dir()
  • 是的 sys_get_temp_dir() 甚至不适合我。因此,我还将 DOMPDF_TEMP_DIR 更改为 getcwd().'/tmp ,为此,我创建了一个具有写入 dompdf 目录权限的“tmp”目录。但它仍然无法正常工作
【解决方案2】:

DOMPDF 不是浏览器,它不会下载图像或任何其他资产,它只是将 HTML/CSS 转换为 PDF 表示形式。

您需要wkhtmltopdf 之类的东西来实现这一点。

【讨论】:

  • 很抱歉,如果我传达了不正确的信息,但我只想将 HTML 转换为 PDF,并且 DOMPDF 可以正常工作,除非是图像。它不显示 HTML 页面中存在的图像
  • dompdf 能够很好地渲染图像。在此处查看图像示例:pxd.me/dompdf/www/examples.php
猜你喜欢
  • 2021-01-18
  • 1970-01-01
  • 2012-06-04
  • 2017-09-17
  • 2022-12-21
  • 1970-01-01
  • 2013-07-06
  • 2020-01-16
  • 1970-01-01
相关资源
最近更新 更多