【问题标题】:Can't get margin to align correctly FPDF无法正确对齐 FPDF
【发布时间】:2014-03-11 07:25:49
【问题描述】:

当我输出到 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');

我的问题是 //Insert Indemnity 表单下的几行。我想要一些保证金,我认为使用SetMarginLeft(); 可以,但事实并非如此。请帮忙!

【问题讨论】:

    标签: php pdf fpdf


    【解决方案1】:

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

    $pdf->setX(20);
    

    或者,您可以在输出任何人之前设置边距。但我不能 100% 确定这将如何与全宽横幅一起使用。

    【讨论】:

    • 您好,感谢您的意见。是的,我试过了,但没有运气,我尝试在我的赔偿之前和输出之前设置 X,但表格仍然与最左边对齐。我想我可以使用 multiCells 来实现这一点,有一个空单元格,然后是另一个带有表单的单元格,第三个在右边作为右边距。
    • MMh,为什么要使用$pdf->MultiCell(300, 10, $pdf->Write(500,$text));而不是 $pdf->MultiCell(300, 10, $indemRow['form']);
    • $indemRow['form']的内容是HTML,需要先转换!
    • 你尝试过类似 $pdf->setMargins(20, 20, 20);
    • 是的,我也试过了,但是横幅图片不在页面的最左上角
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-26
      • 2018-05-09
      • 1970-01-01
      相关资源
      最近更新 更多