使用MPDF为大型HTML生成横版PDF时页眉页脚不显示如何解决
mPDF导出PDF页眉页脚不显示解决方案
- 调整初始化页边距配置
mPDF默认上下边距不足以容纳<h1>标签的页眉内容,会被主体内容挤压隐藏,初始化时需要显式指定上下边距,单位为毫米,可根据实际页眉页脚高度调整数值:
$mpdf = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'orientation' => 'L', 'margin_top' => 30, // 匹配页眉高度预留空间 'margin_bottom' => 25, // 匹配页脚高度预留空间 ]);
- 强制指定页眉页脚生效范围
调用SetHTMLHeader、SetHTMLFooter方法时传入第二个参数all,确保所有页面都应用配置,同时建议给页眉页脚元素加上内联样式重置默认边距,避免超出预留区域:
$mpdf->SetHTMLHeader('<h1 style="margin:0;padding:0;font-size:18px;">TEST</h1>', 'all'); $mpdf->SetHTMLFooter('<h1 style="margin:0;padding:0;font-size:18px;">TEST</h1>', 'all');
- 排查HTML内容冲突规则
检查传入的$html内容中是否存在@page全局规则、body全局margin设置,如果有类似@page { margin: 0; }的配置会直接覆盖mPDF的页眉页脚边距设置,需要删除这类冲突规则。
完整可用代码示例
$mpdf = new \Mpdf\Mpdf([ 'mode' => 'utf-8', 'orientation' => 'L', 'margin_top' => 30, 'margin_bottom' => 25, ]); $mpdf->SetHTMLHeader('<h1 style="margin:0;font-size:18px;">TEST</h1>', 'all'); $mpdf->SetHTMLFooter('<h1 style="margin:0;font-size:18px;">TEST</h1>', 'all'); $mpdf->WriteHTML($html); $mpdf->Output($namePDF,'F');
内容的提问来源于stack exchange,提问作者Nathan Metzger
相关产品推荐
相关产品推荐

