2016-08-11 18 views
0

次は、 "HELLO"と点線で表示されるコードです。このことは50回繰り返されます。すべて正常に動作していますが、2ページ目が始まると点線が消えます。このコードではどのような変更が必要ですか?FPDF PHP - 2番目のページでラインが正常に動作しない

<?php 

    require("fpdf.php"); 

    class PDF extends FPDF 
    { 
     function SetDash($black=null, $white=null) 
     { 
      if($black!==null) 
       $s=sprintf('[%.3F %.3F] 0 d',$black*$this->k,$white*$this->k); 
      else 
       $s='[] 0 d'; 
      $this->_out($s); 
     } 
    } 

    $pdf = new PDF('P', 'mm', 'A4'); 
    $pdf->AliasNbPages(); 
    $pdf->AddPage(); 
    $margin = 0; 

    $pdf->SetFont('Arial','B',12); 

    for ($i = 0; $i < 50; $i++) 
    { 
     $pdf->Cell(90, 10, "Hello", 0, 1); 
     $pdf->SetDrawColor(0,0,0); 
     $pdf->SetDash(2,2); 
     $margin = $margin + 10; 
     $pdf->Line(10,$margin,200,$margin); 
    } 

    $pdf->Output(); 

    ?> 

答えて

1

あなたは、改ページがループの途中で発生した場合でも、各行の後に10であなたの$margin変数の値をインクリメントしています。したがって、第2ページの第1行の上端は、第1ページの最後の行の上端よりも10ミリメートル大きい。

新しいページを追加するときに余白をリセットする必要があります。

この問題の解決方法は、FPDFのAcceptPageBreakメソッドをオーバーライドすることです。このメソッドは、ページの一番下に達したときに新しいページの追加をインターセプトします。

class PDF extends FPDF 
{ 
    var $lineY = 0; 

    // ... 

    function AcceptPageBreak() 
    { 
     $this->lineY = 0; 
     return parent::AcceptPageBreak(); 
    } 
} 

次に、あなたのループでは、あなたが行うことができます:

$pdf->Line(10, $pdf->lineY, 200, $pdf->lineY); 
関連する問題