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

如何解决TCPDF从数据库读取多张图片在PDF中不显示的问题?

解决TCPDF生成PDF时HTML图片不显示的问题

我之前也踩过TCPDF渲染HTML图片的坑,结合你贴的代码来看,虽然HTML里的路径看起来正常,但TCPDF对图片的处理有几个容易忽略的点,给你几个排查和解决的方向:

  • 改用服务器本地绝对路径,而非HTTP URL
    TCPDF是在服务器端生成PDF,它没法像浏览器那样通过HTTP请求加载图片,必须直接访问服务器上的本地文件路径。你现在用base_url()生成的是HTTP链接,得换成服务器的文件系统路径:

    // 替换原来的$link拼接方式
    $local_root = $_SERVER['DOCUMENT_ROOT']; // 获取网站根目录的本地路径
    foreach($defect_photos as $defect_photo){
        $img_path = $local_root . '/uploads/defects/' . $defect_photo;
        $html .= "<tr><td><img src='$img_path'></td></tr>";
    }
    

    同时要确认:这个本地路径下的图片确实存在,并且服务器运行的用户(比如Apache的www-data、Nginx的nginx用户)有读取该文件的权限。

  • 给img标签明确指定宽高属性
    TCPDF渲染HTML图片时,如果没有设置宽高,经常会出现不显示或者显示异常的情况。建议加上具体的宽高值(可以根据实际需求调整):

    $html .= "<tr><td><img src='$img_path' width='250' height='200'></td></tr>";
    
  • 检查TCPDF的核心调用和图片格式兼容性

    1. 确保你是用$pdf->writeHTML($html, true, false, true, false, '');这类正确的方法渲染HTML,而不是用输出纯文本的方法。
    2. TCPDF对图片格式有要求,只支持JPG、PNG、GIF等常见格式,如果你的图片是WebP这类特殊格式,需要先转成兼容格式再存入数据库。
  • 调试验证:把路径打印到PDF里
    可以在HTML里同时输出图片路径,方便你确认路径是否正确:

    $html .= "<tr><td>图片路径:$img_path<br><img src='$img_path' width='250'></td></tr>";
    

    生成PDF后,就能直观看到路径是否指向正确的文件,再去服务器上核对这个路径的文件状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:20:57