Bootstrap dompdf:未找到图像或类型未知

xkftehaa  于 2023-02-17  发布在  Bootstrap
关注(0)|答案(9)|浏览(150)

这是我的代码,我几乎尝试了所有的方法显示图像的PDF格式,但仍然没有工作。你能帮我这个。我也设置DOMPDF_ENABLE_REMOTE为真,仍然结果是一样的。

require_once("dompdf/autoload.inc.php");
//require('WriteHTML.php');
$html = '<body>
 <div id="watermark"><img src="/var/htdocs/PDF/header.png" height="100%" width="100%"></div>
  <div id="header">
    <h3 style="padding-top:10px;">'.$_POST['name'].'</h3>
  </div>
  <div id="footer">
    <h3 style="padding-top:8px; padding-right:25px;" class="CIJ">ABSOLUTE MARKET INSIGHTS</h3>
  </div>
   <div>
    <br><br><div class="ooo" style="padding-top: 20px;">'.$_POST['comment'].'</div>
  </div>
</body>';

use Dompdf\Dompdf;
$dompdf = new Dompdf();
$canvas = $dompdf->get_canvas();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream($_POST["name"], array("Attachment" => false));
ogq8wdun

ogq8wdun1#

您是否尝试过完整路径/url:
<img src="http://domain.com/var/htdocs/PDF/header.png" height="100%" width="100%">
或者采用更多变的解决方案:

$baseurl = "http://www.domain.com";
echo '<img src="' . $baseurl . '/var/htdocs/PDF/header.php" height="100%" width="100%">';
x6492ojm

x6492ojm2#

我尝试了上面的所有其他解决方案-但唯一对我有效的是将图像保存在dompdf文件夹中,然后从该文件夹中引用它们。

iszxjhcz

iszxjhcz3#

最后,我得到了正确的解决方案,以工作与任何服务器-〉使用Base64在Img源属性,像这样:

<img src="{{$variable['signature']}}" />
57hvy0tb

57hvy0tb4#

我尝试了几种不同的解决方案,并希望分享,我如何解决这个问题。
1.在“vendor”目录中查找:“找不到图像或类型未知”(对我来说是:/供应商/域名PDF/域名PDF/源代码/图像/缓存. php)
public static $error_message =“未找到图像或类型未知”;
1.之后,您将在同一文件中找到一个位置,在那里使用了此错误消息。
1.在修改文件之前,您可能需要更改该文件的权限,为此,您可以用途:
sudo chmod -R 777 ./厂商
1.通过在catch('} catch(ImageException $e){')内添加以下内容来修改文件:
$消息= $e-〉获取消息();
转储($e-〉获取消息());死亡;
1.尝试建立PDF。现在你应该看到一个更详细的报告(不要忘记改变这些变化回来...)。
1.我得到了一个关于chroot问题的错误,我试图改变镜像的chroot,但是没有用,因为在服务器和本地主机中有一个不同的chroot,所以我修改了它如下:

$options = new Options();
 $options->setChroot('');

 $dompdf = new Dompdf();
 $dompdf->setOptions($options);
 $dompdf->loadHtml($html, 'UTF-8');
 $dompdf->render();
kt06eoxx

kt06eoxx5#

您需要添加**“已启用远程”=〉true**

return PDF::setOptions(['isHtml5ParserEnabled' => true, 'isRemoteEnabled' => true])->loadView('reports.invoiceSell')->stream();
unftdfkk

unftdfkk6#

您应该使用完整的URL而不是直接路径。尤其是当它不是静态图像时:dompdf将直接打开该php脚本,因此它不会像PHP脚本一样执行。
如果完整的URL不起作用,您还可以显示header.php的结果。要记住的一些好事情是发送正确的内容类型的头部等等。

xxb16uws

xxb16uws7#

最后,我得到了正确的解决方案,以工作与任何服务器-〉使用Base64在Img src属性:)

gjmwrych

gjmwrych8#

在1.0.2版中有效的另一种方法是对文件进行更改。

dompdf/src/Image/Cache.php

将变量($chrootValid)设置为true

$chrootValid = true;
  • 在这种情况下,您无法获得完整路径
eqoofvh9

eqoofvh99#

在Mac上,将生成以下错误,但在Dompdf中不会显示此错误消息。
“无法在/var/文件夹/cc/nxb 7 r62 n4 vb 0 dds 455 ss 6pw 0000 gn/T中创建临时映像“

$options = new Options();
$options->setTempDir('temp'); // temp folder with write permission

$dompdf = new Dompdf();
$dompdf->setOptions($options);

相关问题