Использование php wordwrap для переноса на разные длины в каждой строке, а затем печатать с Zend PDF? - PullRequest
0 голосов
/ 05 апреля 2011

Как видно из названия, мне нужно использовать 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#97380 & http://www.ehow.com/how_2226138_wrap-text-zendpdf.html

Тем не менее, ни один из них не охватывает способ запуска новых линий в разных точках для каждой линии.Может быть, это только потому, что сегодня понедельник, но мне трудно собрать его.

Есть идеи?

1 Ответ

1 голос
/ 05 апреля 2011

Я закончил с этой функцией здесь, которая разделяет ее и возвращает в виде массива. Затем я проверяю 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; 
}
...