You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中使用Dompdf生成PDF时图片加载失败问题求助

解决Laravel中Dompdf生成PDF时图片无法加载的问题(报错:Image not found or type unknown)

针对你遇到的问题,以下是几种可行的解决方案:

方案一:配置Dompdf允许远程/本地URL加载

修改控制器代码,在setOptions中添加相关配置,确保Dompdf能正确解析asset生成的URL:

public function downloadPdf()
{
    $cakes = Cake::all();

    $data = [
        'cakes' => $cakes,
    ];

    $pdf = PDF::loadView('pages.cake.pdf', $data)
        ->setOptions([
            'defaultFont' => 'sans-serif',
            'isRemoteEnabled' => true, // 允许加载外部或本地URL图片
            'chroot' => public_path() // 限制Dompdf仅访问public目录,提升安全性
        ])
        ->setPaper('landscape', 'a4');

    return $pdf->download('kue.pdf');
}

视图中保留asset()路径,同时修正样式拼写错误(heigth改为height):

<img src="{{ asset('fotoKue/kue-fazril.jpg') }}" alt="Foto Kue" style="height: 8rem; width: 8rem;">

方案二:使用本地绝对文件路径

直接在视图中使用服务器端的绝对文件路径,避免URL解析问题:

<img src="{{ public_path('fotoKue/kue-fazril.jpg') }}" alt="Foto Kue" style="height: 8rem; width: 8rem;">

这种方式无需额外修改控制器配置,Dompdf可直接识别本地文件系统路径。

方案三:Base64编码嵌入图片(彻底解决路径问题)

如果上述方案无效,可将图片转为Base64编码直接嵌入HTML,绕开路径解析:

  1. 修改控制器生成Base64字符串:
public function downloadPdf()
{
    $cakes = Cake::all();
    // 生成图片Base64编码
    $imagePath = public_path('fotoKue/kue-fazril.jpg');
    $imageBase64 = base64_encode(file_get_contents($imagePath));
    $imageSrc = 'data:image/jpeg;base64,' . $imageBase64;

    $data = [
        'cakes' => $cakes,
        'imageSrc' => $imageSrc
    ];

    $pdf = PDF::loadView('pages.cake.pdf', $data)
        ->setOptions(['defaultFont' => 'sans-serif'])
        ->setPaper('landscape', 'a4');

    return $pdf->download('kue.pdf');
}
  1. 视图中使用生成的Base64路径:
<img src="{{ $imageSrc }}" alt="Foto Kue" style="height: 8rem; width: 8rem;">

额外检查项

  • 确认图片文件存在:public/fotoKue/kue-fazril.jpg路径正确,文件名大小写与代码一致(Linux系统区分大小写)
  • 确保服务器对public目录有读取权限
  • 修正视图中style的拼写错误:heigth改为height

内容的提问来源于stack exchange,提问作者Fazril Arief Nugraha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:05:33