gpt4 book ai didi

php - MultiCell 元素的 FPDF 高度

转载 作者:可可西里 更新时间:2023-11-01 13:07:22 40 4
gpt4 key购买 nike

我使用 FPDF 库将一些文档文件导出为 PDF。一个文档包含一个长度不同的字符串列表。我将所有字符串打印为 $pdf->MultiCell()。现在我想让那个 MultiCell 的当前高度具有相同的行间距,以防它们只有一行或多行。

代码示例:

//MySQL Query
while($row = mysql_fetch_array($res) {
$pdf->SetXY(18, $x);
$pdf->MultiCell(80, 5, $rowr['text']); //text has one or more lines
$x = $x + 10; // Here I would prefer a solution to say: $x = $x + 2 + height of the MultiCell()
}

最佳答案

我遇到了完全相同的问题;我使用 FPDF 生成发票,每行有四个单元格,第一个单元格是一个具有不同高度的多单元格(默认高度为 5,但如果订单名称太长,它会添加另一行到总高度 10,依此类推) .问题是其余 3 个单元格的高度是固定的。

在寻找解决方案之后,似乎唯一的办法就是编写一个复杂的函数或使用一些第三方工具。因为我希望我的应用程序尽可能轻便,所以我使用以下方法来解决它,在我看来这比外部插件更简单。

  1. 包含发票详细信息的行从 Y=95 开始,所以我使用 $Y=95;在我的 while 循环之前
  2. 我的第一个单元格(MultiCell)如下:

    $pdf->SetXY(10,$Y);
    $pdf->MultiCell(60,5,$row['Name'],1,1,'L');
  3. 我使用 FPDF 的 GetY() 函数获取当前高度并将其保存为 H:

    $H = $pdf->GetY();

    如果 MultiCell 的高度为 5,GetY() 将返回 100,如果高度为 10,GetY() 将返回 105,依此类推。

  4. 我添加新变量 $height:

    $height= $H-$Y;

    结果就是 MultiCell 的高度。

  5. 我使用 $Y 和 $height 来设置当前位置和列高:

    $pdf->SetXY(130,$Y);
    $pdf->Cell(40,$height,$row['RowName'],1,1,'L');
  6. 在完成 while 循环之前,设置 $Y 为 $H 的值:

    $Y=$H;

整个循环如下所示并且运行良好:

$Y= 95;

$query = mysqli_query($con,"SELECT * FROM table");

while($row = mysqli_fetch_array($query)) {
$pdf->SetXY(10,$Y);
$pdf->MultiCell(60,5,$row['ROW1'],1,1,'L');

$H = $pdf->GetY();
$height= $H-$Y;

$pdf->SetXY(70,$Y);
$pdf->Cell(60,$height,$row['ROW2'],1,1,'L');
$pdf->SetXY(130,$Y);
$pdf->Cell(40,$height,$row['ROW3'],1,1,'L');
$pdf->SetXY(170,$Y);
$pdf->Cell(30,$height,$row['ROW4'],1,1,'L');

$Y=$H;
}

如果您在每行中有 2 个或更多的多单元格列,它会变得棘手,但仍然可以通过类似的方式解决。

关于php - MultiCell 元素的 FPDF 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18356118/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com