【问题标题】:Whitespace at bottom of pages with FPDFFPDF 页面底部的空白
【发布时间】:2013-10-30 14:02:33
【问题描述】:

我刚刚完成了一个生成 PDF 格式发票的 PHP 脚本的工作。我为此使用了 FPDF。 PDF 的每一页都有一个图像作为背景。这是一张尺寸为 793x1113 像素的单张图片,经过反复试验,我发现像素完美地填满了整个页面。 在列出产品的循环中,我检查了 Y 位置的值。如果太高,我再添加一个页面,再次绘制背景图像,并将 Y 位置设置在正确的点以继续列表。 一切都很好,除了一个小问题:在每一页上,除了最后一页,背景图像下方添加了大约 10 像素的空白,使布局看起来不太好。

这个问题似乎与我在整个脚本中添加的任何文本内容都没有关系,因为当我只是添加几个空白页时,会发生完全相同的情况。我想这是在添加新页面时插入的标准空格。我能做些什么来摆脱它,让一切变得无缝吗?

下面是我用来生成带背景的三页 PDF 的简单代码。测试时,第 1 页和第 2 页底部有 10 个像素的空白,而最后的第 3 页没有。 设置图像时从 GetX 和 GetY 中减去的 10 个像素将图像直接定位在左上角。在添加每个页面后,我已经 var_dumped Y 位置,但这始终是完全相同的值,所以这也不是问题。

$pdf = new FPDF();
$background = '../data/images/pdf/fullbackground.png';
$pdf->AddPage();
$pdf->Cell( 0, 0, $pdf->Image($background, $pdf->GetX() - 10, $pdf->GetY() - 10, 0), 0, 0, 'L', false );
$pdf->AddPage();
$pdf->Cell( 0, 0, $pdf->Image($background, $pdf->GetX() - 10, $pdf->GetY() - 10, 0), 0, 0, 'L', false );
$pdf->AddPage();
$pdf->Cell( 0, 0, $pdf->Image($background, $pdf->GetX() - 10, $pdf->GetY() - 10, 0), 0, 0, 'L', false );
$pdf->Output();
die();

有什么想法吗?

【问题讨论】:

    标签: php pdf fpdf


    【解决方案1】:

    尝试将页边距设置为 0 并禁用自动分页,底部页边距为 0。

    例如:

    $pdf->SetMargins(0,0,0);
    $pdf->SetAutoPageBreak(false,0);
    

    SetMargins 默认左/上/右边距为 1 厘米,SetAutoPageBreak 默认为真,下边距为 2 厘米。

    【讨论】:

      【解决方案2】:

      您不必手动添加页面。 将自动分页设置为 true,边距为 0:

      $pdf->SetAutoPageBreak(true,0);
      

      【讨论】: