【问题标题】:Why is there a left padding in a cell using FPDF in php?为什么在 php 中使用 FPDF 的单元格中有左填充?
【发布时间】:2011-09-22 19:45:31
【问题描述】:

我正在使用 php 中的 FPDF(http://www.fpdf.org/) 类打印一个单元格。单元格应放在左上角。

一切都很好,除了在单元格内添加了一个左填充。

这是我的代码:

$pdf = new FPDF('L', 'mm', array(50.8,88.9));
$pdf->addPage('L', array(50.8,88.9));
$pdf->SetDisplayMode(100,'default');
$pdf->SetTextColor(0,0,0);
$pdf->SetMargins(0,0,0);    
$pdf->SetAutoPageBreak(0);
$pdf->SetFont('Arial','',8.5);

$pdf->SetXY(0, 0); //sets the position for the name
$pdf->Cell(0,2.98740833, "Your Name", '1', 2, 'L', false); //Name

这是使用 FPDF 输出的 PDF 的屏幕截图:

为什么在 php 中使用 FPDF 的单元格中存在左填充,如何删除填充?

【问题讨论】:

  • 你真的应该结帐TCPDF。我认为不再维护 FPDF。
  • 我听取了您的建议并使用 TCPDF 创建了相同的页面,现在我在单元格中获得了顶部和左侧的填充。我在这里发布了代码和截图:stackoverflow.com/questions/6483326/…
  • 抱歉,我并不是说它一定会解决问题,只是说 TCPDF 是一个比 FPDF 更现代和维护的软件包。我曾经使用 FPDF,但发现 TCPDF 更有用。

标签: php pdf pdf-generation fpdf


【解决方案1】:

我知道这是超级旧的,但我已经解决了同样的问题,所以也许有人会觉得它很有用。

FPDF 类中有一个名为 $cMargin 的属性,用于计算文本在单元格中打印之前的 x 偏移量,但似乎没有设置器。它是一个公共属性,所以在实例化 FPDF 类之后,只需调用:

$pdf = new fpdf('P','mm','A4');
$pdf->cMargin = 0;

您的单元格将不再有左侧的填充。

【讨论】:

  • 在 FPDF 1.8.1 中此属性受保护,因此此答案将不起作用。
  • @AnwarNairi 那么我们要怎么做才能在单元格中填充呢?
  • 对于 Python pyfpdf 等效项,您可以设置 pdf.c_margin = 0
【解决方案2】:

小修复更新证明

<?php
require("fpdf.php");

class CustomFPDF extends FPDF{
    function SetCellMargin($margin){
        // Set cell margin
        $this->cMargin = $margin;
    }
}
?>

<?php
$pdf = new CustomFPDF();
$pdf->setCellMargin(0);
?>

【讨论】:

  • 顺便说一句,如果单元格设置为居中对齐,则单元格边距无效
【解决方案3】:

我不知道如何删除填充。

作为一种解决方法,不管字体大小如何,知道它似乎是 1 毫米是很有用的。右对齐的文本在右边缘应用相同的填充。

【讨论】:

    【解决方案4】:

    我遇到了同样的问题。只有第一行有这个不需要的边距,所以我的解决方法是:

      $pdf->Ln(); //workaround for 1st line
      $pdf->Cell(..);
    

    【讨论】:

    • 也解决了我的问题,您可以将高度值传递给Ln(1)
    【解决方案5】:

    你试过运行SetMargins(0,0)吗?

    设置边距

    SetMargins(float left, float top [, float right])

    说明

    定义左边距、上边距和右边距。 默认情况下,它们等于 1 厘米。调用此方法更改它们。

    http://www.fpdf.org/en/doc/setmargins.htm

    【讨论】:

    • 感谢您的提示,但我实际上已经在使用该功能。我没有在这里列出它,因为我认为它不重要。我现在已经更新了我正在使用的所有功能,以便您有更好的想法。
    • 这个函数是设置整个页面的边距,而不是每个单元格。
    【解决方案6】:

    在 AddPage 之前使用 SetMargins

    示例:

    $pdf=new PDF();
    $pdf->SetMargins(23, 44, 11.7);
    $pdf->AliasNbPages();
    $pdf->AddPage();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 2016-12-29
      • 2014-06-16
      • 1970-01-01
      相关资源
      最近更新 更多