在 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");
这是按预期工作的。
还是谢谢了。
我正在使用 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");
这是按预期工作的。 还是谢谢了。