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

Using GetStringWidth in TCPDF to short a string

我正在使用 TCPDF 打印条形码 sheet 标签。 每个标签下面都有一个条形码和一些文本。 Evreything 似乎工作正常,但有时文本太长并且 'invade' 下 label/next 行。

我正在尝试检查字符串的长度 - 并在需要时将其缩短:

$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]);
    }

有什么建议吗?谢谢

好的,终于明白了。 问题确实出在 substr 函数中。我使用的是 UTF-8,所以我不得不使用 mb_substr...

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

这是按预期工作的。 还是谢谢了。