防止 mPDF 中的正文与页脚重叠

2022-08-30 17:34:15

我使用mPDF库生成PDF,我的页眉和页脚的大小取决于几个参数。

静态解决方案是设置页脚边距,这将解决重叠问题 - 但由于页脚的大小可能会有所不同,因此这不是我感到满意的解决方案。有没有办法获取页脚尺寸并相应地应用边距?


答案 1

问题在于 mpdf 的文档。我认为margin_footer和margin_header是文档正文和这些之间的边距。相反,margin_footer和margin_header是文档边距,正如人们所认为margin_top和margin_bottom一样。

因此,更改下边距和上边距将决定文档正文的起始位置。更改页眉/页脚边距将决定打印边距。

希望它有帮助!

更新的答案

我猜mPDF文档对于构造函数调用来说有点不对劲。margin_top/底部参数实际上是内容边距,不适用于margin_header/页脚参数。(如果我没记错的话)。margin_top/下是距文档顶部的绝对边距,应包括页眉/页脚的高度。

以下是处理边距的正确方法:

/**
 * 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);

答案 2
$mpdf->setAutoBottomMargin = 'stretch';

为我工作。我所要做的就是确保在页脚之前包含该选项。


推荐