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

求助:Laravel中Dompdf无法渲染HTML图片的问题

解决Dompdf生成PDF时图片无法渲染的问题

针对你遇到的图片不显示问题,按以下步骤排查修复:

1. 修正Options配置错误

你手动创建Options实例时,存在两处关键错误:未在代码中开启enable_remote,且chroot路径、字体配置参数有误。修改generateReceiptPDF方法中的Options配置:

$options = new Options();
$options->set('defaultFont', 'Arial'); // 原代码的`set('default')`参数错误,应为`defaultFont`
$options->set('isPhpEnabled', true);
$options->set('enable_remote', true); // 手动开启远程资源访问,覆盖配置文件设置
$options->setChroot(public_path()); // 用Laravel辅助函数获取正确的public目录绝对路径
$this->dompdf->setOptions($options);

2. 调整图片引用方式

方案一:使用本地路径(推荐)

结合chroot设置,在Blade模板中用相对public目录的路径引用图片,避免远程URL访问问题:

<img src="logo/Logo.jpg" alt="" class="">

或直接使用本地绝对路径:

<img src="{{ public_path('logo/Logo.jpg') }}" alt="" class="">

方案二:确保远程URL可访问

若坚持使用asset()生成的URL,需确认:

  • 服务器自身能正常访问该URL(本地开发时APP_URL需设为服务器可访问的地址,如http://localhost:8000)
  • 图片URL无权限限制(无需登录即可访问)

3. 验证文件与权限

  • 确认public/logo/Logo.jpg真实存在,路径大小写与代码一致(Linux系统大小写敏感)
  • 执行chmod 644 public/logo/Logo.jpg,确保PHP进程拥有文件读取权限

4. 开启调试定位问题

添加调试代码查看Dompdf的具体警告信息,精准定位错误:

$this->dompdf->render();
// 输出调试警告
dd($this->dompdf->getWarnings());

内容的提问来源于stack exchange,提问作者Kubura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:06:06