Php Dompdf远程图像未以pdf格式显示
在我的服务器上,通过dompdf生成的pdf未显示图像。 因为它们是远程url图像。(本地图像工作正常) 然后我知道它需要一些设置来渲染远程图像Php Dompdf远程图像未以pdf格式显示,php,image,dompdf,Php,Image,Dompdf,在我的服务器上,通过dompdf生成的pdf未显示图像。 因为它们是远程url图像。(本地图像工作正常) 然后我知道它需要一些设置来渲染远程图像 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
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的问题,我在本地主机中设置了false,它现在提供与服务器相同的输出
所以,现在的问题是,我想在PDF中显示远程图像,并且允许url\u fopen=false
- 我尝试了5-10种独特的方法来做到这一点
- 我尝试在php文件中显示图像(通过设置标题),然后 以pdf格式显示php链接
- 我也试图通过php的绝对路径显示图像,但什么也没有 成功了
- 我尝试通过函数中的curl获取图像,然后显示 它在一个php文件中…但是没有运气
Image not found
http://localhost/dompdf/image.php
及
你能在你用来打开PDF的机器上的网络浏览器中找到这些URL吗?如果没有,PDF阅读器也不能 我怀疑“localhost”域意味着这些URL只在生成PDF的web服务器上可见。您需要输出一个url,如
(要解决此问题,请记住,有充分的理由不使用远程图像。例如,如果查看器未连接到internet,文档将看起来很糟糕。是否可以直接将图像嵌入文档中?)dompdf目前没有区分本地域和远程域的机制,因此任何启动的URLhttp://... 被视为远程。另外,任何使用基于PHP的中介(如pic.PHP)的图像都不能使用本地路径,因为除非您通过web服务器,否则不会解析PHP 这是一个困难的前景,但您的页面是动态生成的。因此,我看到两种选择:
由于您已经解决了使用curl获取图像的问题,您应该能够实现其中任何一个。转到dompdf\u config.inc.php文件,并将变量dompdf\u ENABLE\u REMOTE设置为TRUE…我认为您可以添加此选项
private function change_url_image($data, $url) {
$str = $url; //for example "http://localhost/yoursite/";
$str2 = str_replace($str, "", $data);
return $str2;
}
要更改图像的url,我遇到了相同的问题,
我找到了解决方案,你只需仔细检查图像路径
考虑您的实时服务器映像路径
<img src="http://www.example.com/public/images/thumb.png">
你只需要把它改成
<img src="public/images/thumb.png">
注意:确保所有设置都与您已经进行的设置相同
我希望这会对你有所帮助。有两件事需要注意
/var/www/html/project\u folder/images/logo.jpg
JPEG
图像,而不是png
或其他类型在“DOMPDF/DOMPDF\u config.inc”中设置“DOMPDF\u ENABLE\u REMOTE=>true”时,我也遇到了同样的问题,但没有成功 有一件事对我有效 将图像/css的src从绝对更改为相对并完成操作。在这种情况下,我的服务器上有所有css/图像。试试看
$options = new Options();
$options->set('isRemoteEnabled', true);
$dompdf = new Dompdf($options);
以防有人和我有同样的问题:
- 我将src=“https:/”更改为src=“http:/”,图像加载良好
- 我还将所有CSS内联添加到
中,而不是通过
加载 - 并确保CSS
位于
而不是
- 我使用了这行代码
<img src="{{ url('/frontened/images/jeevan-green-logo.png') }}" >
很好用。谢谢。我给你举一个函数的例子
$html = $this->output->get_output();
$this->load->library('pdf');
$this->dompdf->loadHtml($html);
$this->dompdf->set_option('isRemoteEnabled', true);
$this->dompdf->setPaper('A4', 'portrait');
$this->dompdf->render();
$this->dompdf->stream("studentidcard.pdf", array("Attachment"=>0));
将isremoteenabled设置为true以显示远程图像我做了大量的研发工作后也遇到了同样的问题,最终得到了解决方案。首先,您需要获得dompdf的选项,然后将
isremoteenabled设置为true
$options = $dompdf->getOptions();
$options->set(array('isRemoteEnabled' => true));
$dompdf->setOptions($options);
嗨,我解决这个问题的方法是在php.ini文件中添加启用allow_url_fopen
$data = {{any html content with src & href links}}
有时,它可能基于不安全的url(如带有无效ssl证书的https
)发生。因此,无法通过url访问dompdf的呈现程序以获取内容。检查您的内容是否有任何不安全的url。如果您在浏览器中将该url与过程作为不安全的选项一起使用,请使用以下方法。它将替换指向abspath的url
$url = "https://example.com";
$abspath="/home/public_html/example" || getcwd();
$data = preg_replace('#(src=\"[\s\r\n]{0,})('.$url.')#','$1'.$abspath, $data);
$data = preg_replace('#(href=\"[\s\r\n]{0,})('.$url.')#','$1'.$abspath, $data);
转到library/dompdf/scr/option
更改私有$isRemoteEnabled=false;to private$isRemoteEnabled=true 我对图像也有同样的问题,我的解决方案是:
getcwd().'path/to/image'
这对我有用 尝试使用.jpg映像的完整目录路径
我意识到当您远程托管文件时会出现jpg图像。这是因为,DOMPF无法访问服务器上的图像,请检查您是否添加了任何保护以访问您的网页。此处用户正在查看我的网站并动态生成pdf,例如,我正在pdf中显示他的个人资料图片。(profilepic在cdn服务器上)所以可能我可以提供像cdnserver.com/user/12.jpg这样的链接,或者另一种方式是myserver.com/user\u profiles/pic.php?id=12这两种方式都不起作用,用户可以访问互联网。你没有看到,他已经在做同样的事情了吗?你找到解决方案了吗?我也遇到同样的问题,图像在本地主机上显示正常,但在live server上显示不正常,路径正常,图像已在服务器上。否。仍然没有找到它。+1从半个n小时开始搜索这个问题,这一个真的很有帮助。@irfan Ahmed感谢您的解决方案如果图像名称有空格,则获取问题。谢谢。这对我有帮助。顺便说一句,我不得不删除公共文件。“”希望这能帮助其他人。我也必须使用Options类,就像这样:use Dompdf\Options
在我的例子中,$dompdf=newdompdf()$dompdf->set_选项('isRemoteEnabled',TRUE)
getcwd().'path/to/image'