如何让mPDF 7版本不对首个h1标签执行分页?
嘿,我来帮你解决这个mPDF生成空白第二页的问题!
你遇到的问题大概率是因为**AddPageByArray()方法会主动添加一个新页面**,再加上你给h1设置的分页规则,两者叠加导致了多余的空白页。咱们一步步调整:
核心问题分析
当你一开始就调用$mpdf->AddPageByArray()时,mPDF已经创建了一个空白页。之后你的HTML里第一个h1虽然设置了page-break-before:avoid,但这个h1会被渲染在刚才新增的页面上——如果你的内容只有这一个h1,mPDF可能因为边距计算或者默认的文档规则,额外生成一页空白页。
解决方案:替换初始分页方法
不要用AddPageByArray()来设置初始边距,而是在初始化mPDF的时候直接配置全局边距,这样不会额外创建页面:
// 初始化mPDF时直接设置边距 $mpdf = new \Mpdf\Mpdf([ 'margin_left' => 15, 'margin_right' => 20, 'margin_top' => 15, 'margin_bottom' => 15, ]); // 你的HTML内容保持不变(可以去掉多余空行避免隐性问题) $html = " <style type='text/css'> h1 { page-break-before:always; } h1:first-child { page-break-before:avoid; } </style> <h1>Heading 1</h1> "; $mpdf->WriteHTML($html); $mpdf->Output();
额外检查点
如果还是有问题,你可以:
- 去掉HTML里
<style>标签前后的多余空行,避免隐性的空白内容触发分页 - 确保没有其他CSS规则(比如
body的margin或padding)和全局边距冲突
这样调整后,第一个h1会正常渲染在第一页,不会触发分页,自然也就不会出现空白第二页啦!
内容的提问来源于stack exchange,提问作者anjanesh
相关产品推荐
相关产品推荐

