0

就像标题说的那样,我需要使用 php(wordwrap 或其他任何工作)将字符串拆分为行并使用 Zend 打印到 PDF 上,但每行的长度不同,并且从不同的 X 和 Y 位置开始(对于 $page -> 绘制文本)。

示例 - 有一个总共大约 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

不过,两者都没有真正涵盖在每条线的不同点开始新线的方法。也许这只是因为它是星期一,但我很难把这个放在一起。

有任何想法吗?

4

1 回答 1

1

我在这里结束了这个函数,它将它拆分并作为数组返回。然后我检查 if (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; 
}
于 2011-04-05T17:07:18.930 回答