FPDF PHP - 第二页中的线条无法正常工作

FPDF PHP - Line is not working properly in second page

以下是我的代码,它打印 "HELLO",然后是一条虚线。这件事重复了 50 次。一切正常,但是当第二页开始时,虚线消失了。这段代码需要做哪些修改?

   <?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();

    ?>

您在每行之后将 $margin 变量的值递增 10,即使在循环中间出现分页符也是如此。因此,第二页第一行的上边距将比第一页最后一行的上边距大 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);