Dompdf远程图像未以pdf格式显示

问题描述 投票:11回答:10

在我的服务器上,通过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的问题,我在localhost中设置false,现在提供与服务器相同的输出。

所以,现在问题是我想用allow_url_fopen = false显示PDF格式的远程图像

  • 我尝试了近5-10种独特的方法来做到这一点。
  • 我试图在php文件中显示图像(通过设置标题),然后在pdf中显示php链接
  • 我试图通过绝对路径显示图像到PHP,但没有任何工作。
  • 我尝试通过curl在一个函数中获取图像然后在一个php文件中显示...但没有运气。

是否有人可以建议我如何以pdf格式显示图像。我一直得到的错误是......

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

Image not found
http://localhost/dompdf/image.jpg
php image dompdf
10个回答
32
投票

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

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

考虑您的实时服务器映像路径

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

你只需要改成它,

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

注意:请确保所有设置与您已完成的设置相同。

我希望这能帮到您。


-1
投票

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


31
投票

尝试

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

9
投票

有两件事需要照顾。

  1. 如果使用来自同一服务器的图像,则使用完整目录路径/var/www/html/project_folder/images/logo.jpg
  2. 列表项使用JPEG图像而不是png或其他类型。

1
投票

我想你可以加上这个

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

更改图像的网址


0
投票

您是否可以在用于打开PDF的计算机上的Web浏览器中访问这些URL?如果没有,PDF阅读器也将无法使用。

我怀疑“localhost”域意味着这些URL只能从生成PDF的Web服务器中看到。你需要输出像http://example.com/dompdf/image.jpg这样的网址

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


0
投票

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

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

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

由于您已经使用curl获得了图像,因此您应该能够实现其中任何一个。


0
投票

我面临同样的问题,而我也在“dompdf / dompdf_config.inc”中设置了“DOMPDF_ENABLE_REMOTE => true”,但没有奏效。

有一件事对我有用,将images / css的src从绝对更改为相对和完成的事情。在这种情况下,我的服务器上有所有的css / images。


0
投票

万一有人和我有同样的问题:

  • 我将src =“https://”更改为src =“http://”并且图像加载正常。
  • 我还在<style>中添加了所有CSS内联,而不是通过<link>加载
  • 并确保CSS <style><head>而不是<body>

0
投票

我使用了这行代码

<img src="{{ url('/frontened/images/jeevan-green-logo.png') }}" >

它工作正常。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.