在我的服务器上,通过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格式的远程图像
有没有人可以建议我如何以pdf格式显示图像。 我一直得到的错误是......
Image not found
http://localhost/dompdf/image.php
和
Image not found
http://localhost/dompdf/image.jpg
答案 0 :(得分:29)
我有同样的问题, dompdf image not found on live server
我找到了它的解决方案,你只需要仔细检查图像路径,
考虑您的实时服务器图像路径
<img src="http://www.example.com/public/images/thumb.png">
您只需将其更改为
即可<img src="public/images/thumb.png">
注意:请确保所有设置与您已完成的设置相同。
我希望这会对你有所帮助。
答案 1 :(得分:28)
尝试
$options = new Options();
$options->set('isRemoteEnabled', true);
$dompdf = new Dompdf($options);
答案 2 :(得分:7)
有两件事需要处理。
如果使用来自同一服务器的图像,则使用完整目录路径,例如
/var/www/html/project_folder/images/logo.jpg
列表项使用JPEG
图片代替png
或其他类型。
答案 3 :(得分:1)
这是因为,DOMPDF 无法访问服务器上的图片,请检查您是否添加了任何保护来访问您的网页。
答案 4 :(得分:1)
您好,我对此问题的解决方案是在我的php.ini文件中添加启用allow_url_fopen
答案 5 :(得分:0)
我使用了这行代码
<img src="{{ url('/frontened/images/jeevan-green-logo.png') }}" >
一切正常。谢谢。
答案 6 :(得分:0)
尝试对.jpg图片使用完整目录路径
我意识到,当您远程托管文件时,会出现jpg图片。
答案 7 :(得分:0)
我在图片上也遇到了同样的问题,我的解决方法是:
getcwd().'path/to/image'
对我有用!
答案 8 :(得分:0)
转到库/ dompdf / scr / option
change private $ isRemoteEnabled = false;私有$ isRemoteEnabled = true;
答案 9 :(得分:0)
$data = {{any html content with src & href links}}
有时,它可能是基于无效的url(例如https
)和无效的ssl证书而发生的。因此无法访问dompdf的渲染器获取内容的URL。检查您的内容是否包含不安全的网址。如果您在浏览器中使用带有process as unsafe
选项的网址,请使用以下方法。它将网址替换为abspath
$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);
答案 10 :(得分:0)
经过大量的研发,我终于遇到了同样的问题。首先,您需要获得dompdf的选项,然后将isRemoteEnabled
设置为true。
$options = $dompdf->getOptions();
$options->set(array('isRemoteEnabled' => true));
$dompdf->setOptions($options);
答案 11 :(得分:0)
我给你一个带有函数的例子
$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以显示远程图像
答案 12 :(得分:0)
您是否可以在用于打开PDF的计算机上的Web浏览器中访问这些网址?如果没有,PDF阅读器将无法使用。
我怀疑“localhost”域意味着这些URL只能从生成PDF的Web服务器中看到。您需要输出类似http://example.com/dompdf/image.jpg
的网址(要解决这个问题,请记住,有充分的理由不使用远程图像。例如,如果观看者没有连接到互联网,文档看起来会很糟糕。是否可以嵌入图像直接在文件中?)
答案 13 :(得分:0)
万一有人和我有同样的问题:
我将src =“ https ://”更改为src =“ http ://”并且图片已正确加载。
< / LI>我还在<style>
内添加了所有CSS内联,而不是通过<link>
并确保CSS <style>
位于<head>
而不是<body>
答案 14 :(得分:0)
我遇到的同样问题,我在“dompdf / dompdf_config.inc”中也设置了“DOMPDF_ENABLE_REMOTE =&gt; true”,但没有用。
有一件事对我有用 将images / css的 src 从绝对更改为相对和完成的事情。在这种情况下,我的服务器上有所有的css / images。
答案 15 :(得分:0)
我想你可以添加这个
private function change_url_image($data, $url) {
$str = $url; //for example "http://localhost/yoursite/";
$str2 = str_replace($str, "", $data);
return $str2;
}
更改图片的网址
答案 16 :(得分:0)
dompdf目前没有区分本地域和远程域的机制,因此任何启动http:// ...的URL都被视为远程。此外,任何使用基于PHP的中介(如pic.php)的图像都不能使用本地路径,因为除非您通过Web服务器,否则不会解析PHP。
这是一个艰难的前景,但您的页面是动态生成的。所以我看到两个选择:
由于您已经尝试使用curl获取图像,因此您应该能够实现其中任何一种。
答案 17 :(得分:-1)
转到dompdf_config.inc.php文件并将变量DOMPDF_ENABLE_REMOTE设置为TRUE ...