【问题标题】:On pdf generate getting Image not found or type unknown barryvdh\dompdf error在 pdf 上生成找不到图像或键入未知 barryvdh\dompdf 错误
【发布时间】:2021-05-03 10:14:31
【问题描述】:

使用 laravel 的 barryvdh/laravel-dompdf 包在 Laravel 中生成 PDF 时出现以下错误。

图片未找到或类型未知

HTML

<html>
<head>
    <style>
        table
        {
            border-color: #000;
            color: #000;
            border-collapse: collapse;
            font-family: sans-serif;
        }   
    </style>
</head>
<body>
    <table style="width: 100%; margin-top: 10px;" cellpadding="3" border="1">
        <tr>
            <td  style="text-align: right; font-weight: bold; font-size: 14px; padding-left: 5px;">User Image</td>
            <td colspan="4" style="height: 50px;">
                <img src="/val/test/storage/images/profile_1611820816863.jpg" height="70">
            </td>
        </tr>
    </table>
</body>
</html>

等级

 $complete_html = '<above HTML>';
 $dompdf = new Dompdf();
                $dompdf->loadHtml($complete_html);
                $page_size = 'A4';
                $dompdf->setPaper($page_size, 'portrait');
                $dompdf->render();

                $file_name = 'test_dom';
                $dompdf->stream($file_name.'.pdf', array("Attachment" => 1));

我已查看有关此主题的其他帖子,并在 dompdf 配置文件中将“RemoteEnable”设置为 true,然后重新启动服务器,但仍然遇到此问题。

编辑 我已更改图像路径,它是共享文件夹路径,而不是项目或本地路径。 此外,文件和文件夹路径都具有完全的读写权限(777)

【问题讨论】:

  • 你试过img src的完整网址吗?
  • @FirdausNasir 我的图像文件位于存储文件夹或不在公共文件夹中的某个共享网络文件夹中,因此我无法使用完整 URL,我只能使用绝对路径。
  • 以下答案是否解决了问题

标签: php linux laravel dompdf


【解决方案1】:

您的课程错了,要使用laravel-dompdf,您应该调用PDF\Barryvdh\DomPDF\PDF。并将/test/example-app/storage/images/profile_1611820816863.jpg 更改为真正的绝对路径。如果您的图像文件夹位于app 文件夹中,则应更改为app_path('storage/images/profile_1611820816863.jpg')。下面是使用 dompdf 包装器的工作代码:

$pdf     = \Barryvdh\DomPDF\PDF::loadHtml('<html><head>
<style>
        table
        {
            border-color: #000;
            color: #000;
            border-collapse: collapse;
            font-family: sans-serif;
        }   
</style>
</head>
<body>
    <table style="width: 100%; margin-top: 10px;" cellpadding="3" border="1">
        <tr>
            <td  style="text-align: right; font-weight: bold; font-size: 14px; padding-left: 5px;">User Image</td>
            <td colspan="4" style="height: 50px;">
                <img src="'.app_path('storage/images/profile_1611820816863.jpg').'" height="70>
            </td>
        </tr>
    </table>
</body></html>');
$pdf->stream('test_pdf.pdf', array("Attachment" => 1));

如果您仍想使用不带包装器的原始 dompdf,则需要将图像 url 更改为 app_path('/storage/images/profile_1611820816863.jpg') 并将 chroot 设置为 app_path()

下面是我测试过的没有包装的工作代码:

         $complete_html = '<html><head>
<style>
        table
        {
            border-color: #000;
            color: #000;
            border-collapse: collapse;
            font-family: sans-serif;
        }   
</style>
</head>
<body>
    <table style="width: 100%; margin-top: 10px;" cellpadding="3" border="1">
        <tr>
            <td  style="text-align: right; font-weight: bold; font-size: 14px; padding-left: 5px;">User Image</td>
            <td colspan="4" style="height: 50px;">
                <img src="'.app_path('/test/example-app/storage/images/profile_1611820816863.jpg').'" height="70>
            </td>
        </tr>
    </table>
</body></html>';
 $dompdf = new \Dompdf\Dompdf();
 $options = $dompdf->getOptions();
$options->setChroot(app_path());
$options->setIsRemoteEnabled(true);
$dompdf->setOptions($options);

     $dompdf->loadHtml($complete_html);

     $page_size = 'A4';
     $dompdf->setPaper($page_size, 'portrait');
     $dompdf->render();

     $file_name = 'test_dom';
     $dompdf->stream($file_name.'.pdf', array("Attachment" => 1));

【讨论】:

  • 我更改了图像路径,它是共享文件夹路径,而不是项目或本地路径。
  • 所以我认为问题是图像路径不可访问。您必须授予该文件夹路径的权限。对于简单的练习(但不好),尝试将 chmod 更改为 777 到所有相关文件夹以及图像文件本身。也别忘了设置setChroot
  • 图像文件夹和图像都有 777 和 setChroot 但没有运气
  • 你如何设置chroot,如果我设置正确setChroot,我测试并工作
【解决方案2】:

这可能是因为文件权限问题,请检查您的 BL 服务器是否具有从共享位置读取/写入图像文件所需的所有权限。

只有在服务器配置可以更改时才会发生这种情况。

【讨论】:

  • 另外,如果不起作用,请尝试在您的服务器上运行“php artisan storage:link”命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 2017-03-16
  • 2023-03-26
相关资源
最近更新 更多