我正在使用mPDF生成PDF。 PDF通常是一页,两页或三页。
有一个页眉,然后是内容,然后是我有问题的部分,页脚。除最后一页外,所有页面的页脚都相同,页尾添加了一些信息(例如总计,税金等,作为发票)。
<htmlpagefooter name="myfooter">
<div style="border-top: 1px solid #888888; font-size: 9pt; text-align: center; padding-top: 3mm; ">
<div style="text-align: center; font-style: italic; font-size:11px;">Some text</div>
<br/>
<div style="text-align: center; font-style: italic; font-size:11px;">Page {PAGENO} of {nb}</div>
</div>
</htmlpagefooter>
<sethtmlpagefooter name="myfooter" value="on" />
<htmlpagefooter name="LastPageFooter">
Some more content that I won't paste because it's too long.
<div style="border-top: 1px solid #888888; font-size: 9pt; text-align: center; padding-top: 3mm; ">
<div style="text-align: center; font-style: italic; font-size:11px;">Some text</div>
<br/>
<div style="text-align: center; font-style: italic; font-size:11px;">Page {PAGENO} of {nb}</div>
</div>
</htmlpagefooter>
mpdf-->
这将创建2个页脚,并添加一个称为“ myfooter”的页脚。然后,在文档末尾有这行代码,而不是添加“ myfooter”页脚而不是“ LastPageFooter”。
<sethtmlpagefooter name="LastPageFooter" value="1" />
我还尝试过删除该行并添加以下一行
$footer = 'the footer content';
$mpdf->WriteHTML($html);
$mpdf->SetHTMLFooter($footer);
一切正常,除非最后一页的内容太长(PDF是否长一页或多页都没有关系)。内容和页脚重叠。我想象它会创建仅具有该页脚的另一个页面,但是没有。
阅读文档并在Google上搜索后,我发现
$mpdf->setAutoBottomMargin = 'stretch';
和
$mpdf->setAutoBottomMargin = 'pad';
但是它们都不起作用。它会创建一个新页,页脚设置正确,但页脚也会打印在此页上,因此根本无法解决。该页脚应该消失,仅显示在最后一页。
该页脚包含一些信息和两个签名的位置,因此我将其添加到最后一个页脚中,因为它只需要位于结尾处,但不一定需要位于页脚内部。我之所以这样说,是因为也许还有另一种方法可以得到相同的结果,而不必在最后一页中添加页脚。
编辑:
再次尝试使用“ setAutoBottomMargin”属性后,如果我在Mpdf构造函数中按如下所示进行设置,则仅会生成一个新页面,在该页面中可以正确打印页脚
$mpdf = new \Mpdf\Mpdf([
'margin_left' => 5,
'margin_right' => 5,
'margin_top' => 40,
'margin_bottom' => 25,
'margin_header' => 10,
'margin_footer' => 10,
'setAutoBottomMargin' => 'pad'
]);
再次编辑:
好像我之前犯了一些错误,它可以与我发布的最后一个设置一起使用,但并非没有问题。当PDF有一页以上时,它在内容和页脚之间留有很大的白色间隙,如下图所示: big white gap
可以通过将属性'margin_bottom'=> 25更改为'margin_bottom'=> 5来减少它。在切换到下一页之前,它还显示了3行,但是内容和页脚在最后一页中再次重叠。