2

我刚刚完成了一个生成 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();

有任何想法吗?

4

2 回答 2

1

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

例如:

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

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

于 2014-02-27T01:38:33.337 回答
0

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

$pdf->SetAutoPageBreak(true,0);
于 2017-06-27T13:09:31.897 回答