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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:21:01