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

Dompdf图片在预发布服务器PDF中不显示,本地正常

生成PDF时图片无法显示的排查与解决

我已经尝试了5-10种不同方法解决PDF中图片不显示的问题,相关代码如下:

$logoImagePath = public_path("assets/img/main-logo.png");

$logoImage = base64_encode(file_get_contents($logoImagePath));

<img src="data:image/png;base64,' . $logoImage . '"
     style="width: 100%; height: 15%;">

$pdf = PDF::loadHTML($html);

但生成的PDF里还是看不到任何图片。


可能的问题点及修复方案

  • 字符串拼接错误:你的img标签里base64字符串的拼接存在语法问题,PHP变量与HTML字符串的嵌入逻辑有误。正确的拼接方式应该是将HTML片段完整赋值给$html变量,确保变量正确嵌入到src属性中:

    $html = '<img src="data:image/png;base64,' . $logoImage . '" style="width: 100%; height: 15%;">';
    
  • 图片路径与权限验证:先确认public_path("assets/img/main-logo.png")返回的路径是否正确,可通过var_dump($logoImagePath);输出路径后手动检查文件是否存在、是否有可读权限。如果文件不存在或权限不足,file_get_contents会返回false,最终生成的base64内容是无效的。

  • PDF渲染库的CSS支持限制:如果使用的是laravel-dompdf这类库,它对CSS百分比高度的支持可能存在局限,建议换成固定像素值(比如height: 80px;),同时给img标签添加明确的display: block;属性,提升渲染兼容性。

  • base64编码有效性验证:先输出$logoImage的值,复制到本地的base64图片查看工具中验证是否能正常显示,确认编码后的内容是有效的图片数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:47:06