PHP文件转PDF时dompdf无法正常显示Base64格式图片问题咨询
dompdf转换嵌入Base64图片的PHP页面时图片不显示的解决方法
问题排查&解决步骤:
首先调试确认dompdf实际拉取到的HTML内容是否完整
在load_html_file代码后新增一行输出dompdf加载到的原始HTML,检查Base64字符串是否完整、有无被截断、前缀是否正确:$dompdf->load_html_file($file); // 新增调试代码 echo $dompdf->outputHtml(); exit;若Base64内容不完整,检查datafile.php的输出逻辑,确保
$Base64img变量无多余空白字符、换行,输出时无其他额外内容。替换远程文件加载方式为本地内容加载
load_html_file加载远程HTTP地址时容易受请求超时、header限制等影响,改为先在本地请求datafile.php获取完整HTML内容后再传入dompdf,兼容性更好:function getdata($visit){ require_once 'dompdf/autoload.inc.php'; $dompdf = new Dompdf(); // 开启必要配置 $dompdf->set_option('isRemoteEnabled', TRUE); $dompdf->set_option('chroot', __DIR__); // 新增chroot配置,避免权限限制 $dompdf->setPaper('A4', 'landscape'); // 本地请求获取完整HTML内容 $file='http://localhost/xxx/production/datafile.php?id='.$visit; $html = file_get_contents($file); $dompdf->loadHtml($html); $dompdf->render(); $dompdf->stream(); }升级dompdf到最新稳定版
0.8.x及更早版本的dompdf对Base64格式图片的支持存在已知缺陷,升级到1.2.x或2.x系列版本即可解决大部分兼容问题。调整img标签的尺寸单位
dompdf对百分比高度的解析支持不好,把img标签的height属性改为固定像素值:echo '<img height="112px" width="150px" src="data:image/png;base64,' . $Base64img . '" />';
内容的提问来源于stack exchange,提问作者Salum Said
相关产品推荐
相关产品推荐

