如何解决图像未在服务器上与 TCPDF 一起显示
我遇到了与 TCPDF don't display image with writeHTML 相同的问题。在我的本地主机服务器上一切正常,但在部署到实时服务器时没有显示图像。
我尝试了以下步骤:
- 图片是base64,所以和路径或文件权限无关。我打印了 base64 字符串,很确定它是正常的。
- png 和 jpeg 格式都不起作用
- TCPDF Image() 和 writeHTML() 都不起作用
- 引号是
'<img src="..." />'
而不是"<img src='...' />"
- 添加宽度和高度不起作用。
代码如下:
// $data is the base64 string
$data = base64_decode($scoreImg);
$pdf->Image('@'.$data); // this doesn't work
$html = '<img src="data:image/jpeg;base64,' . $scoreImg . '" width="50" height="50">';
$pdf->writeHTMLCell(0,'',$html,1,true,true); // this doesn't work as well
任何人都请拯救我的一天。
解决方法
从某处获取图像数据,然后用base64编码,并用@符号设置图像:
$data = base64_encode($data);
$pdf->Image('@'.$data);
,
使用正确的 base64 编码图像字符串,您应该能够通过 Image('@') 命令和 writeHTML 语句来完成
请试试这个(请用您自己的路径替换 tcpdf.php 文件路径) - 它会生成并下载带有红点图像的 pdf:
<?php
require_once('./tcpdf/tcpdf.php');
$pdf = new TCPDF("P",PDF_UNIT,PDF_PAGE_FORMAT,true,'UTF-8',false);
$pdf->AddPage();
$data='iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
$imgdata = base64_decode($data);
$pdf->Image('@'.$imgdata);
$pdf->writeHTML($html,false,'');
$pdf->Output('ken1.pdf','D');
?>
上面的 $data 字符串是一个 base64_encoded 图像文件字符串。例如如下
$data = base64_encode(file_get_contents("reddot.png"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。