在TCPDF中使用GetStringWidth来缩短字符串

时间:2016-02-11 21:40:08

标签: php while-loop tcpdf substr

我正在使用TCPDF打印条形码表标签。 每个标签都有条形码,下面有一些文字。 Evreything似乎工作正常,但有时文本会长并“侵入”下一个标签/下一行。

我正在尝试检查字符串的长度 - 如果需要,请将其缩短:

$label_w = ($page_w-$right_mar-$left_mar)/$Col;
$text_width = $pdf->GetStringWidth($exploded_line[2]);
while ($text_width>$label_w-15) // "-15" because the text location
    {
        $exploded_line[2]=substr($exploded_line[2],0,-1);
        $text_width = $pdf->GetStringWidth($exploded_line[2]);
    }

进入循环的文字只会继续缩小,直到只剩下第一个字母 ...

起初我认为问题是我的While条件由于某种原因没有停止。 然后我尝试将其更改为简单的if - 但问题并没有消失......

if ($text_width>$label_w-15)
    {
        $exploded_line[2]=substr($exploded_line[2],0,-1);
        $text_width = $pdf->GetStringWidth($exploded_line[2]);
    }

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:1)

好的,最后我明白了。 问题实际上在substr函数中。我使用的是UTF-8,所以我不得不使用mb_substr ...

$exploded_line[2]=mb_substr($exploded_line[2],0,-1,"utf-8");

这是按预期工作的。 不管怎样,谢谢。