就像标题所说,我需要使用 php(自动换行或任何有效的方法)将字符串拆分为行并使用 Zend 打印到 PDF 上,但每一行的长度不同,从不同的 X 和 Y 位置开始(对于 $page->drawText)。
示例 - 有一个总共大约 500 个字符的文本字符串 - 没有很长的单词(最多 7 或 8 个字符),固定宽度字体。我需要将其打印到 pdf 中的一系列行上。 第一行最多 84 个字符 (x = 172),接下来的 3 行最多 108 个字符 (x = 53),最后一行是 95 个字符 (x = 150)。 每行向下 11 点(Y2 = Y1 - 11),尽管理想情况下我也可以为每个新行设置 Y,以防万一。
这里有几个代码片段为我指明了正确的方向 - http://www.php.net/manual/en/function.wordwrap.php#97380 & http://www.ehow.com/how_2226138_wrap-text-zendpdf.html
但是,两者都没有真正涵盖在每行的不同点开始新行的方法。 也许只是因为今天是星期一,但我很难把这个放在一起。
有什么想法吗?
我在这里得到了这个函数,它将其拆分并作为数组返回。 然后我检查是否 (strlen($new[4])> 95) 并用 substr 截断它。
function pdfWrapSplit($text, $lines, $firstWidth, $secondWidth)
{
$text = wordwrap($text, $firstWidth, "|");
$lastPos = 1;
for ($i=0;$i<$lines;$i++)
{
$lastPos = strpos($text, '|', $lastPos+1);
if ($lastPos === FALSE)
break;
}
$text = substr($text, 0, $lastPos) . "|" . wordwrap(str_replace('|',' ',substr($text, $lastPos)), $secondWidth, '|');
$new = explode('|', $text);
return $new;
}