1

我是 tcpdf 的新手,正在创建我的第一个文档。

我想知道是否有办法让单元格的宽度自动适应内容。我目前只看到固定大小的选项,或者将整个页面宽度直到行尾。

我知道 GetStringWidth() 但有以下问题

  • 为什么要为此烦恼呢?有没有办法让单元格自动适应其内容宽度?

  • GetStringWidth() 似乎不时出错,给出较短的实际结果,从而导致文本被拆分到下一行。设置了字体。

4

2 回答 2

4

在进一步学习了 TCPDF 之后,得出的结论是: Cell() 和 MultiCell() 不打算仅用于输出字符串并拟合其长度。相反,应该使用 Write() 和 WriteHtml()。对于您实际想要手动控制字段尺寸的情况,存在单元格。

然而,在某些情况下,可能需要计算单元格的宽度,以便将内部文本的大小考虑在内。为此目的存在GetStringWidth()。(对我来说不幸的是,它时不时会出错。也许我不知道什么)

于 2013-05-21T16:11:26.977 回答
0

有一个使用 TCPDF 生成清单 PDF 的内部“旧版”应用程序。我们最近从创建一个巨大的 HTML 字符串来描述一个使用该$pdf->writeHTML($myHTMLString);方法创建的表格的 HTML 字符串,转向使用该MultiCell()方法。

但是,我们遇到了一个问题,即描述单元格中的某些文本需要运行到第二行,这使我们的布局中断。作为修复,我们基于 2 个变量创建了一个 if 块,一个用于字符串宽度,另一个用于实际单元格宽度。(我们有 2 个实例,其中单元格宽度可能会有所不同)。

如果阻止示例:

// Get width of string
$lWidth = $pdf->GetStringWidth(strip_tags($clItem['description']));
// Determine width of cell
$oadWidth = (.01*$width[0])*186;
if ($lWidth < $oadWidth) {
    $cHeight = 3.5;
} else {
    $cHeight = 7;
}

MultiCell()然后我们像这样使用 if 块创建的变量

$pdf->MultiCell((.01*$width[0])*186, $cHeight, strip_tags($clItem['description']), 1, 'L', 1, 0, '', '', true);

我们在其他兄弟单元格中重用了$cHeight高度参数的变量,因此每一行单元格都有一个统一的高度。您很可能将此方法与任何其他在 TCPDF 中具有高度参数的正确函数一起使用。感谢@shealtiel 的原始参考GetStringWidth()

于 2018-03-21T14:00:27.827 回答