我正在使用mPDF库生成PDF,我的页眉和页脚的大小会因几个参数而异。
静态解决方案是设置页脚边距,这将解决重叠 - 但由于页脚的大小可能不同,这不是我感到满意的解决方案。有没有办法获得页脚尺寸并相应地应用边距?
答案 0 :(得分:23)
问题在于mpdf的文档。我认为margin_footer和margin_header是文档正文和这些之间的边距。相反,margin_footer和margin_header是文档边距,因为人们会认为margin_top和margin_bottom将是。
因此,更改底部和顶部边距将决定文档正文的起始位置。并且更改页眉/页脚边距将决定打印页边距。
希望它有所帮助!
更新回答
我猜,对于构造函数调用,mPDF文档有点过时了。 margin_top / bottom参数实际上是内容边距,不适用于margin_header / footer参数。 (如果我没记错的话)。 margin_top / bottom是文档顶部的绝对边距,应包括页眉/页脚的高度。以下是处理边距的正确方法:
/**
* Create a new PDF document
*
* @param string $mode
* @param string $format
* @param int $font_size
* @param string $font
* @param int $margin_left
* @param int $margin_right
* @param int $margin_top (Margin between content and header, not to be mixed with margin_header - which is document margin)
* @param int $margin_bottom (Margin between content and footer, not to be mixed with margin_footer - which is document margin)
* @param int $margin_header
* @param int $margin_footer
* @param string $orientation (P, L)
*/
new mPDF($mode, $format, $font_size, $font, $margin_left, $margin_right, $margin_top, $margin_bottom, $margin_header, $margin_footer, $orientation);
答案 1 :(得分:14)
$mpdf->setAutoBottomMargin = 'stretch';
为我工作。我所要做的就是确保在页脚之前添加选项。
答案 2 :(得分:1)
它对我没有用,但是我设法找到了解决方法。我要做的就是在所有内容之前设置页脚。这是因为页脚的高度计算是在进行任何内容处理之前完成的。但是,如果以后使用SetHTMLFooter
添加页脚,则mPDF不会重新计算页脚的高度,因此它将为0。这样就不会出现分页符,并且内容将与正文重叠。所以最终的解决方案是:
'setAutoBottomMargin' => 'stretch'
创建mPDF对象希望有帮助。
答案 3 :(得分:0)
'setAutoBottomMargin' => 'stretch'
该属性对我有用。
这是我的代码
$mpdf = new \Mpdf\Mpdf([
'setAutoBottomMargin' => 'stretch'
]);