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

TCPDF从HTML生成PDF报错:无法获取assets/logo.png图片尺寸

问题原因与修复方案

1. continue 语法警告

原因

你使用的TCPDF版本过旧,和PHP 7.3+版本语义不兼容。在PHP7.3及以上版本中,switch 结构内的continue语句默认作用于switch本身,效果等价于break,和老版本TCPDF原本预期的跳出外层循环的逻辑不符,因此触发警告。

修复方案

  • 优先升级到官方最新版TCPDF,该兼容问题已经被官方修复
  • 若需保留当前TCPDF版本,直接找到报错的tcpdf.php文件第17778行,将该行的continue修改为continue 2即可

2. chr() 参数类型警告

原因

同样是旧版TCPDF和高版本PHP的兼容问题,旧版字体处理逻辑中没有严格限制传入chr()函数的参数类型,高版本PHP对参数类型校验更严格,因此触发警告。

修复方案

  • 升级到最新版TCPDF即可解决
  • 若不升级,找到tcpdf_fonts.php第1671行,给传入chr()的参数外层增加intval()强制转为整数类型即可

3. 图片无法读取致命错误

原因

你传递给TCPDF的HTML内容中,图片使用的是相对路径assets/logo.png。TCPDF运行在服务端ajax/createPDF.php脚本的路径下,会按照服务端本地的相对路径规则查找文件,和前端网页的相对路径规则不匹配,因此无法定位到图片文件。

修复方案二选一即可:

  • 将图片路径修改为服务端可识别的绝对路径,可使用站点完整访问URL,或者服务器本地的绝对文件路径(如/volume1/web/assets/logo.png)
  • 前端将图片转为base64编码直接嵌入HTML中,TCPDF可直接解析内嵌的base64资源,无需单独读取文件

额外优化建议

前端传输HTML内容时,先通过encodeURIComponent()对HTML字符串编码,服务端接收后用urldecode()解码后再传入TCPDF,可避免特殊字符被转义丢失导致的渲染异常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:45:05