7

6行(マルチセル)を約30回出力するこのループがあります。問題は、一番下のページに到達すると、マルチセルから2行または3行を印刷し、次のページで他の3行を印刷することです。現在のページの6行すべてに十分なスペースがない場合は、次のページの6行すべてを印刷するようにします。私はこのコードを使用します:

$height_of_cell = 60; mm
$page_height = 279.4; // mm (portrait letter)
$bottom_margin = 20; // mm
$space_left = $page_height - $p->GetY(); // space left on page
$space_left -= $bottom_margin; // less the bottom margin
if ( $height_of_cell >= $space_left) {
$p->Ln();                        
$p->AddPage(); // page break
$p->Cell(100,5,'','B',2); // this creates a blank row for formatting reasons
}

しかし、それは機能しません。解決策はありますか?ありがとう!

4

1 に答える 1

24

GetYを使用して現在の位置を取得し、ドキュメントの高さから減算します。マルチセルの高さが6倍未満(6行ある場合)の場合は、AddPageを使用してページ分割を強制します。

あなたがこれを修正したことは知っていますが、他の誰かの利益のために、これは広い考えを与えるはずです。

<?php
$p = new FPDF();
$p->AddPage();
$p->SetFont('Arial','B',16);
$p->SetAutoPageBreak(false);
$height_of_cell = 60; // mm
$page_height = 286.93; // mm (portrait letter)
$bottom_margin = 0; // mm
  for($i=0;$i<=100;$i++) :
    $block=floor($i/6);
    $space_left=$page_height-($p->GetY()+$bottom_margin); // space left on page
      if ($i/6==floor($i/6) && $height_of_cell > $space_left) {
        $p->AddPage(); // page break
      }
    $p->Cell(100,10,'This is a text line - Group '.$block,'B',2);
  endfor;
$p->Output();
?>
于 2012-09-10T12:20:36.900 に答える