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

使用mPDF基础配置生成PDF仅显示空白页的技术求助

解决mPDF通过AJAX生成空白PDF的问题

以下是针对性的排查和修复方案:

  • 检查mPDF输出的缓冲区与响应头
    确保pdfgenerator.php开头无任何冗余输出(包括空格、UTF-8 BOM头),输出PDF前强制清空缓冲区:

    ob_clean();
    header('Content-Type: application/pdf');
    header('Content-Disposition: inline; filename="output.pdf"');
    
    $mpdf = new \Mpdf\Mpdf();
    $mpdf->WriteHTML('<h1>测试内容</h1>');
    $mpdf->Output('', 'I');
    exit;
    

    遗漏ob_clean()或响应头错误,会导致PDF二进制内容被污染,出现空白页。

  • 修正AJAX的响应类型处理
    AJAX默认以文本格式解析响应,会破坏PDF二进制结构,必须指定responseType: 'blob':

    // 示例jQuery AJAX代码
    $.ajax({
      url: 'pdfgenerator.php',
      method: 'POST',
      xhrFields: {
        responseType: 'blob'
      },
      success: function(blob) {
        const pdfUrl = window.URL.createObjectURL(blob);
        window.open(pdfUrl);
        // 释放临时URL资源
        setTimeout(() => window.URL.revokeObjectURL(pdfUrl), 100);
      }
    });
    
  • 验证mPDF的HTML内容兼容性
    mPDF对现代CSS(如flex、grid)支持有限,先测试极简HTML(纯文本或基础标签)确认是否为内容解析问题。若使用模板文件,确保文件无BOM头,编码与mPDF初始化参数一致(例如设置mode: 'utf-8')。

  • 排查mPDF本地生成是否正常
    将PDF保存到服务器本地,检查文件是否正常:

    $mpdf->Output('/tmp/test_output.pdf', 'F');
    

    若本地文件正常,问题出在浏览器输出环节;若本地文件也空白,开启PHP错误提示排查初始化或内容渲染错误:

    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    

内容的提问来源于stack exchange,提问作者Lukas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:48:16