使用 php 自动换行在每行上以不同的长度换行,然后使用 Zend PDF 打印


Using php wordwrap to wrap at different lengths on each line, then print with Zend PDF?

就像标题所说,我需要使用 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; 
}