Laravel 9中使用Dompdf无法加载图片的问题求助
Dompdf生成PDF图片加载失败问题排查与解决
问题情况
网页中图片显示正常,但通过Dompdf生成PDF时图片加载失败,错误状态如下:
我的代码片段
视图HTML代码
<img src="{{public_path('assets/img/logoprov.png')}}" height="100" width="100"> <img src="{{public_path('img/logoprov.png')}}" height="100" width="100"> <img src="{{asset('img/logoprov.png')}}" height="100" width="100">
Laravel控制器代码
$surat = Surat::find($id); view()->share('surat',$surat); $pdf = PDF::loadView('sekretariat.pdf.index',compact('surat')); return $pdf->download('pdf_file.pdf');
可行解决方法
- 确保传递绝对物理路径:Dompdf无法直接识别Laravel的
asset()生成的URL,必须使用服务器本地的绝对物理路径。可以直接在视图中使用public_path(),但要确认路径是否准确:
或者在控制器中提前拼接好路径传递给视图:<img src="{{ public_path('img/logoprov.png') }}" height="100" width="100">
视图中引用:$logoPath = public_path('img/logoprov.png'); $pdf = PDF::loadView('sekretariat.pdf.index', compact('surat', 'logoPath'));<img src="{{ $logoPath }}" height="100" width="100"> - 开启远程资源访问(若使用网络图片):如果图片是外部URL,需要在生成PDF时启用远程访问选项:
$pdf = PDF::loadView('sekretariat.pdf.index', compact('surat')) ->setOptions(['isRemoteEnabled' => true]); - 检查文件权限:确认图片文件及所在目录的读取权限(建议设置为755),保证Dompdf进程能读取到文件。
- 验证路径正确性:可以通过
dd(public_path('img/logoprov.png'))输出路径,检查是否和实际文件路径一致,避免路径层级错误。
内容的提问来源于stack exchange,提问作者naufal zahir
相关产品推荐
相关产品推荐

