MPDFライブラリを使用してPDFを生成していますが、ヘッダーとフッターのサイズはいくつかのパラメーターによって異なります。
静的な解決策は、フッターのマージンを設定することです。これにより、オーバーラップが解決されますが、フッターのサイズが異なる場合があるため、これは私が満足している解決策ではありません。フッターの寸法を取得し、それに応じてマージンを適用する方法はありますか?
問題はmpdfのドキュメントにあります。 margin_footerとmargin_headerは、ドキュメント本体とこれらの間のマージンだと思います。代わりに、margin_topとmargin_bottomがそうなると思うように、margin_footerとmargin_headerはドキュメントの余白です。
したがって、下マージンと上マージンを変更すると、ドキュメント本文の開始位置が決まります。また、ヘッダー/フッターの余白を変更すると、印刷余白が決まります。
それが役に立てば幸い!
更新された回答
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);
$mpdf->setAutoBottomMargin = 'stretch';
私のために働いた。私がしなければならなかったのは、フッターの前にオプションが含まれていることを確認することだけでした。
それは私にとってはうまくいきませんでしたが、私はこれを解決する方法を見つけることができました。私がしなければならなかったのはコンテンツの前にフッターを設定するです。これは、フッターの高さの計算がコンテンツ処理の前に行われるためです。ただし、後でSetHTMLFooter
を使用してフッターを追加すると、mPDFはフッターの高さを再計算しないため、0になります。これにより、改ページが発生せず、コンテンツが本文に重なります。したがって、最終的な解決策は次のとおりです。
'setAutoBottomMargin' => 'stretch'
を使用してmPDFオブジェクトを作成しますそれが役に立てば幸い。