无法获得边距以正确对齐FPDF

时间:2014-03-11 07:25:50

标签: php pdf fpdf

输出到PDF时出现问题。我们的想法是拥有横跨A4文档整个宽度的横幅图像。然后我在下面有一个表单,但它一直对齐页面的左边。我想设置一些保证金。以下是我到目前为止的情况:

$pdf = new PDF();
    $pdf->SetMargins(1,1,1);
    $pdf->SetXY(-1,-1);
    $pdf->AddPage();
    $pdf->SetFont('Arial','',12);
    //Insert Banner
    $pdf->Image('../assets/pdfBanner.png');
    $pdf->Ln();

    //Insert Indemnity form
    $text=$pdf->WriteHTML($indemRow['form']);
    $nb=$pdf->WordWrap($text,120);
    $pdf->MultiCell(300, 10, $pdf->Write(500,$text));
    $pdf->Ln();

    //Insert Signature
    $x = $pdf->GetX();
    $y = $pdf->GetY();
    $pdf->MultiCell(30, 10, $pdf->WriteHTML('<u>Signature         </ul>'));
    $pdf->SetXY($x + 30, $y);

    $pdf->MultiCell(63, 10, $pdf->Image('signature1.png'));
    $pdf->Ln(0);

    $pdf->Output('test.pdf', 'D');

我的问题是//插入赔偿表单下的几行。我想要一些保证金,我认为使用SetMarginLeft();会做我,但事实并非如此。请帮忙!

2 个答案:

答案 0 :(得分:0)

在输出表格之前,您必须将x设置为适当的值。

$pdf->setX(20);

或者,您可以在输出任何人之前设置边距。但我并不是百分百确定如何使用全宽横幅。

答案 1 :(得分:0)

这似乎是fpdf.php源文件中的一个错误。不要害怕自己解决它!打开fpdf.php文件,查找SetMargins()实现,在这个函数的下面你会发现SetLeftMargin()的实现,它可以正常工作。您将在后一个函数中找到几行代码,用于检查和设置私有变量“x”。这些指令不在SetMargins()实现中,并且是导致问题的最可能原因。只需在SetMargins()函数的末尾复制和调整这些行。这是我的修复:

if($this->page > 0 && $this->x < $left)
    $this->x = $left;

最后在SetMargins()中复制这些行。