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);
以下是我的代码,它打印 "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);