web-dev-qa-db-ja.com

mPDFでフッターが重ならないようにする

MPDFライブラリを使用してPDFを生成していますが、ヘッダーとフッターのサイズはいくつかのパラメーターによって異なります。

静的な解決策は、フッターのマージンを設定することです。これにより、オーバーラップが解決されますが、フッターのサイズが異なる場合があるため、これは私が満足している解決策ではありません。フッターの寸法を取得し、それに応じてマージンを適用する方法はありますか?

20
Daniel

問題は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);
24
Daniel
$mpdf->setAutoBottomMargin = 'stretch';

私のために働いた。私がしなければならなかったのは、フッターの前にオプションが含まれていることを確認することだけでした。

17
asif Iqbal

それは私にとってはうまくいきませんでしたが、私はこれを解決する方法を見つけることができました。私がしなければならなかったのはコンテンツの前にフッターを設定するです。これは、フッターの高さの計算がコンテンツ処理の前に行われるためです。ただし、後でSetHTMLFooterを使用してフッターを追加すると、mPDFはフッターの高さを再計算しないため、0になります。これにより、改ページが発生せず、コンテンツが本文に重なります。したがって、最終的な解決策は次のとおりです。

  1. 'setAutoBottomMargin' => 'stretch'を使用してmPDFオブジェクトを作成します
  2. ヘッダーを追加します
  3. フッターを追加する
  4. コンテンツを追加する

それが役に立てば幸い。

1
Fenistil