使用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
相关产品推荐
相关产品推荐

