CodeIgniter4中TCPDF生成PDF图片不显示问题求助
解决CodeIgniter4中TCPDF生成PDF时Logo不显示的问题
TCPDF无法直接加载通过base_url()生成的HTTP URL图片,大概率是因为它默认优先处理本地文件路径,而非远程/HTTP资源。以下两种方法可以快速解决这个问题:
方法1:使用服务器本地绝对路径
将图片路径替换为服务器上的本地绝对路径,CodeIgniter4可以用ROOTPATH(项目根目录)来拼接public目录下的图片路径:
修改代码中$logoURL的部分:
// 替换原有的base_url行 $logoPath = ROOTPATH . 'public/logo.png'; $html = ' <table width="100%" cellpadding="5"> <tr> <td width="50%"> <img src="' . $logoPath . '" width="150" /> </td> <td width="50%" align="right"> </td> </tr> </table> <!-- 剩余HTML内容不变 --> ';
方法2:将图片转为Base64编码嵌入
如果担心路径问题,也可以把图片转为Base64字符串直接嵌入HTML,这样不需要依赖外部文件:
// 读取图片并转为Base64 $logoPath = ROOTPATH . 'public/logo.png'; $logoBase64 = base64_encode(file_get_contents($logoPath)); $logoSrc = 'data:image/png;base64,' . $logoBase64; $html = ' <table width="100%" cellpadding="5"> <tr> <td width="50%"> <img src="' . $logoSrc . '" width="150" /> </td> <td width="50%" align="right"> </td> </tr> </table> <!-- 剩余HTML内容不变 --> ';
额外注意事项
- 确保
logo.png确实存在于public目录下,且文件权限正确(服务器能读取该文件) - 若一定要用HTTP URL,需要确认服务器的
allow_url_fopen配置已开启,同时在TCPDF中设置$pdf->setAllowRemoteImages(true);,但这种方式不如本地路径稳定
内容的提问来源于stack exchange,提问作者sriyantha sudesh
相关产品推荐
相关产品推荐

