2013-03-01 82 views
8

在我的服务器上通过dompdf生成的pdf不显示图像。 因为它们是远程URL图像(本地图像工作正常) 然后我知道它需要一些设置来渲染远程图像。Dompdf远程图像不显示在pdf

allow_url_fopen = true => i can not as server control is not in my hand.(and no one will suggest to do this due to security reasons) 
read/write access to the DOMPDF_TEMP_DIR (already have this) 
DOMPDF_ENABLE_REMOTE = true (already have this) 

因此,要确保了allow_url_fopen的问题,我设置我的本地也就是现在给输出作为服务器相同的错误。

所以,现在的问题是现在我想了allow_url_fopen =假

  • 我几乎尝试了5-10独特的方式,这样做是为了显示PDF远程图像。
  • 我试图显示PHP文件的图像(通过设置标题),然后 显示在PDF中的PHP链接
  • 我试图通过绝对路径来显示图像到PHP太多,但没有 工作。
  • 我试图通过在函数中通过curl获取图像,然后在php文件中显示 ...但没有运气。

有没有人可以建议我如何以PDF格式显示图像。 我总是得到的错误是...

Image not found 
http://localhost/dompdf/image.php 

Image not found 
http://localhost/dompdf/image.jpg 
+0

你找到任何解决方案?我有同样的问题,图像在本地主机上显示正常,但不在活动服务器上,路径正常,图像已在服务器上。 – 2014-04-01 06:02:57

+0

没有。仍然没有找到它。 – TechCare99 2014-04-12 05:14:30

回答

23

我有同样的问题, dompdf image not found on live server

我找到了自己的解决方案,你只需要仔细检查图像路径,

考虑到您的服务器镜像路径

<img src="http://www.example.com/public/images/thumb.png"> 

你只需将其更改为,

<img src="public/images/thumb.png"> 

注:确保,所有的设置都是一样的,你已经做出。

我希望这会帮助你。

+0

+1正在半小时内寻找问题,这真的有帮助。 – 2014-07-17 12:26:08

+0

感谢这有助于! – gvanto 2015-03-25 05:26:35

+0

@irfan艾哈迈德感谢您的解决方案 – Athi 2015-09-15 12:39:42

0

你能达到在机器上的Web浏览器这些网址,您使用打开PDF?否则,PDF阅读器将无法做到。

我怀疑“localhost”域意味着这些URL只能从生成PDF的Web服务器中看到。您需要输出一个url,如http://example.com/dompdf/image.jpg

(要解决这个问题,请记住,有很好的理由不要使用远程图像。例如,如果查看器未连接到互联网,文档看起来很糟糕。是否可以直接在文档中嵌入图像?)

+0

这里用户正在查看我的网站并动态生成pdf ,例如,我正在以PDF格式显示他的个人资料图片。 (profilepic是CDN服务器上) 所以可能是我可以给的链接像 cdnserver.com/user/12.jpg 或 另一种方式是 myserver.com/user_profiles/pic.php?id=12 两个方式不起作用 和用户有互联网接入 – TechCare99 2013-03-01 09:20:58

0

dompdf目前没有用于区分本地域和远程域的机制,因此任何启动http:// ...的URL都会被处理作为遥远的。另外,任何使用基于PHP的中介(如pic.php)的图像都不能使用本地路径,因为除非您通过Web服务器,否则PHP将不会被解析。

这是一个困难的前景,但您的网页是动态生成的。所以,我看到两个选项:

  1. 下载远程图像和链接到他们的本地文件系统上
  2. 下载远程图像,并使用数据URI。

由于您已经制定出使用curl获取图像,您应该能够实现其中任何一个。

-1

转到dompdf_config.inc.php文件并将变量DOMPDF_ENABLE_REMOTE设置为TRUE ...

+1

难道你不明白,他已经做了同样的回答。 – 2014-04-01 06:00:58

0

我想你可以添加此

private function change_url_image($data, $url) {  
    $str = $url; //for example "http://localhost/yoursite/"; 
    $str2 = str_replace($str, "", $data); 
    return $str2; 
} 

改变URL图像

5

有两件事情需要照顾。

1)如果使用来自同一服务器的图像,则使用完整的目录路径,例如 /var/www/html/project_folder/images/logo.jpg

2)使用JPEG图像,而不是PNG或其他类型。

+0

这(1)为我工作。非常感谢分享! – raphael 2017-01-11 15:06:09

0

我面对同样的问题,同时我也在“dompdf/dompdf_config.inc”中设置了“DOMPDF_ENABLE_REMOTE => true”,但没有成功。

一两件事为我工作 对图像/ CSS的SRC绝对变化相对,事情done.in这种情况下,我有我的服务器上的所有的CSS /图像。

15

尝试

$options = new Options(); 
$options->set('isRemoteEnabled', true); 
$dompdf = new Dompdf($options); 
+0

这为我做了诡计! – Novocaine 2016-11-23 17:00:52

+2

我不得不使用Options类,如下所示:'使用Dompdf \ Options;' – Gavin 2017-08-11 00:41:07