Использование php wordwrap для переноса на разные длины в каждой строке, а затем печатать с Zend PDF?
Как говорится в заголовке, мне нужно использовать php (wordwrap или все, что работает), чтобы разбить строку на строки и напечатать в PDF с помощью Zend, но каждая строка имеет разную длину и начинается с разных позиций 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 & http://www.ehow.com/how_2226138_wrap-text-zendpdf.html
Однако в действительности ни один из них не описывает способ запуска новых линий в разных точках для каждой линии. Может быть, это только потому, что сегодня понедельник, но мне трудно собрать это.
Есть идеи?
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;
}