我是tcpdf的新手,创建了我的第一个文档。
我想知道是否有办法让单元格的宽度自动适应内容。我目前只看到固定大小的选项,或者整个页面宽度直到行尾。
我知道GetStringWidth()但是它有以下问题
为什么要为此烦恼呢?有没有办法让单元格自动适应其内容宽度?
GetStringWidth()似乎不时出错,给出了较短的实际结果,从而导致文本被拆分为下一行。设置了一种字体。
答案 0 :(得分:4)
在学习TCPDF之后,这是结论: Cell()和MultiCell()不能用于输出字符串并使其长度适合。相反,应该使用Write()和WriteHtml()。对于您实际想要手动控制字段尺寸的情况,存在单元格。
然而,在某些情况下,人们可能想要计算单元格的宽度,以便考虑内部文本的大小。为此,存在GetStringWidth()。 (对我来说不幸的是它不时出错。也许我不知道什么)
答案 1 :(得分:0)
拥有一个内部“Legacy”应用程序,它使用TCPDF生成清单的PDF。我们最近创建了一个巨大的HTML字符串,用于描述使用$pdf->writeHTML($myHTMLString);
方法创建的表格,使用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中具有height参数的任何其他正确函数一起使用。感谢@shealtiel对GetStringWidth()