2016-08-11 4 views
0

다음은 "HELLO"라는 점이 찍힌 코드입니다. 이 일은 50 번 반복됩니다. 모든 것이 잘 작동하지만 두 번째 페이지가 시작되면 점선이 사라집니다. 이 코드에는 어떤 수정이 필요합니까?FPDF PHP - 두 번째 페이지에서 라인이 제대로 작동하지 않습니다.

<?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 변수의 값을 증가하고 있습니다. 따라서 두 번째 페이지의 첫 번째 줄의 위쪽 여백은 첫 번째 페이지의 마지막 줄의 위쪽 여백보다 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); 
관련 문제