防止mPDF中的身体重叠页脚

Dan*_*iel 18 php mpdf

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

静态解决方案是设置页脚边距,这将解决重叠 - 但由于页脚的大小可能不同,这不是我感到满意的解决方案.有没有办法获得页脚尺寸并相应地应用保证金?

Dan*_*iel 24

问题在于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);
Run Code Online (Sandbox Code Playgroud)

  • 感谢更新,"实验设置"`$ mpdf-> setAutoTopMargin ='stretch'和$ mpdf-> setAutoBottomMargin ='stretch'`设置将确保页眉和页脚不会与主体重叠,无需您手动计算页眉和页脚边距.在处理动态的,用户创建的页眉和页脚时非常有用 (14认同)

小智 17

$mpdf->setAutoBottomMargin = 'stretch';
Run Code Online (Sandbox Code Playgroud)

为我工作.我所要做的就是确保在页脚之前添加选项.

  • 您可以使用 `->setAutoTopMargin()` 作为标题。 (2认同)

Fen*_*til 5

它对我不起作用,但我设法找到了解决此问题的方法。我所要做的就是在任何内容之前设置页脚。这是因为页脚的高度计算是在任何内容处理之前完成的。但是如果您稍后添加页脚SetHTMLFooter,mPDF 不会重新计算页脚的高度,因此它将为 0。这样就不会出现分页符,内容将与正文重叠。所以最终的解决方案是:

  1. 创建 mPDF 对象 'setAutoBottomMargin' => 'stretch'
  2. 添加标题
  3. 添加页脚
  4. 添加内容

希望能帮助到你。