2

我用getNumLines()在写文本之前估计行数,因为它必须相应地定位。似乎 getNumLines() 为文本计算了比MultiCell()实际需要的更多空间。一条长线,在写作时仍然适合单元格,MultiCell()似乎被软包装getNumLines()

$lines = $pdf->getNumLines($text, $width);
$pdf->MultiCell($width, 50, $text, 0, "L");

在我的测试$lines中是 3,而只打印了 2 行。如果我稍微增加 $width ,我会得到正确的值。第一行较长。所以它不能是最后被包装的非打印字符。

也许是因为我传递给的对齐参数“L” MultiCell()?但是没有这样的getNumLines()......有什么建议吗?

TCPDF 版本:5.9.156

4

3 回答 3

2

在tcpdf 的 bugtracker 的这张票的评论中描述了另一种技术,这听起来很有希望:

如果您想知道确切的行数,则必须使用以下技术:

// 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();
于 2012-06-13T11:34:18.253 回答
1

哈!发现错误:getNumLines()计算换行符和回车的空间。

为了避免这种情况,我编辑了字体定义文件:有一个称为$cw定义每个字符宽度的数组。我添加了两个条目:10 => 0, 13 => 0将换行符和回车符的宽度设置为零。

于 2012-06-13T11:21:48.513 回答
0

最后为 TCPDF 中的“脏”html 字符串表修复了同样的错误。JohJoh 关于 10 => 0, 13 => 0 的回答让我朝着正确的方向前进。我将其更改为 10 => 8750, 13 => 8750 以将其他 td 的内容向下推送适量。

于 2014-06-02T21:33:22.630 回答