我对mpdf还是有点陌生,我尝试使用mpdf使用嵌入式base64显示图像。下面是我的代码。
$kad_photo = base64_encode($row['kad_photo']);
header('Content-Type: image/jpeg;');
$photo = "<img src='"data:image/jpeg;base64, ".$kad_photo."'"/>";
$mpdf->WriteHTML($photo);
当我放入$mpdf->showImageErrors = true;
:时,我得到了这个错误
mPDF error: IMAGE Error (0f5155bea7f7e18dc9f7c35b695d1705): Error parsing JPG header
我试了一下这个方法,它奏效了!
$mpdf->WriteHTML("<img src=".$_SERVER['DOCUMENT_ROOT']."/vms/images/logo/logo.png " .
"width='"500'" height='"50'">");
但对于BASE64,我未能显示它。
除此之外,对于$photo
,我得到了file_put_content
字符串,并将其粘贴到jsfiddle,它就工作了!但在mpdf中,我无法显示base64图像。
为什么我不能使用嵌入式base64显示图像,有什么建议吗?
可能需要的信息
- php.ini中的Gd模块已启用
- Window 10单一语言
我解决了我的问题。我就是这样解决的。
更改此
$photo = "<img src='"data:image/jpeg;base64, ".$kad_photo."'"/>";
到这个
$photo = "<img src='"data:image/jpg;base64, ".$kad_photo."'"/>";
在我的案例中,我处理的一些用户数据中的图像类型设置不正确(设置为png,但图像数据为jpeg(。
$mpdf->showImageErrors = true;
显示"解析PNG标识符时出错">
浏览器似乎能够找到并显示图像,但MPDF很挑剔。
我通过将base64数据粘贴到在线解码器中并尝试各种编码来解决这个问题。
此外,JPEG数据似乎以/j9/开头,如果这对任何人都有帮助的话。
$html= '<img src="data:image/jpeg;base64,'.base64_encode(
stripslashes($row['kad_photo']) ).'"/>';
$mpdf->WriteHTML($html);
$mpdf->Output('My.pdf','D');
请试试这个
我也遇到了同样的问题,我已经修复了它,只是添加了正确的mime类型,我从响应的标头中获得了base64 的图像内容
/** @var 'GuzzleHttp'Psr7'Response $value */
$value = $result['value'];
$contents = $value->getBody()->getContents();
$this->data['images'][] = 'data:' . $value->getHeader('Content-Type')[0] . ';base64,' . base64_encode($contents);