我在写文本之前使用getNumLines()
估计行数,因为必须相应地定位。
似乎getNumLines()为MultiCell()
实际需要的文本计算了更多空间。使用MultiCell()
书写时,仍然适合单元格的长行似乎是由getNumLines()
软包裹的:
$lines = $pdf->getNumLines($text, $width);
$pdf->MultiCell($width, 50, $text, 0, "L");
在我的测试中$lines
是3,而只打印了2行。如果我增加$ width,我会得到正确的值。它是第一条较长的线。所以它最终不能是非打印字符。
也许是因为我传递给MultiCell()
的对齐参数“L”?但getNumLines()
......有什么建议吗?
TCPDF版本:5.9.156
答案 0 :(得分:2)
tcpdf的bugtracker this ticket的评论中描述了另一种技术,这听起来非常有用:
如果您想知道确切的行数,您必须使用以下内容 技术:
// store current object
$pdf->startTransaction();
// get the number of lines
$lines = $pdf->MultiCell($w, 0, $txt, 0, 'L', 0, 0, '', '', true, 0, false,true, 0);
// restore previous object
$pdf = $pdf->rollbackTransaction();
答案 1 :(得分:1)
哈!发现错误:getNumLines()
计算换行和回车的空间。
为了避免这种情况,我编辑了字体定义文件:有一个名为$cw
的数组,用于定义每个字符的宽度。我添加了两个条目:10 => 0, 13 => 0
来设置换行符的宽度和回车符。
答案 2 :(得分:0)
最后修复了TCPDF中'脏'html-string表的相同错误。 JohJoh的回答是关于10 => 0,13 => 0让我朝着正确的方向前进。 我把它改为10 => 8750,13 => 8750将其他td的内容推低到合适的数量。