Podczas generowania dokumentów Pdf przy wykorzystaniu komponentu Zend_Pdf z Zend Framework możne spotkać problem związany z zamieszczaniem w dokumencie długiego tekstu. Z pomocą może tutaj przyjść poniższa metoda, która przyjmując kilka parametrów załatwi za nas całą sprawę automatycznie.
/** * @param $page Zend_Pdf_Page * @param $text sting * @param $charactersPerLine int * @param $xOffset int * @param $yOffset int * @param $lineSpacing int * @return int */ private function _drawMultilineText(&$page, $text, $charactersPerLine, $xOffset, $yOffset, $lineSpacing) { $lines = array(); foreach(explode("\n", $text) as $line) { $lines = array_merge( $lines, explode( "\n", wordwrap($line, $charactersPerLine, "\n") ) ); } foreach($lines as $line) { $page->drawText($line, $xOffset, $yOffset, 'UTF-8'); $yOffset -= $lineSpacing; } return $yOffset; }
Jako parametry metoda ta przyjmuje przede wszystkim obiekt Zend_Pdf_Page, na którym obecnie pracujemy oraz treść $text
, którą chcemy wstawić do dokumentu. Pozostałe parametry tyczą już tylko i wyłącznie pozycji i ustawień wstawianego tekstu w dokumencie:
- charactersPerLine – określa ile znaków ma się znaleźć maksymalnie w pojedynczej linii
- xOffset – wartość przesunięcia w poziomie, gdzie będzie lewa krawędź wstawianego tekstu
- yOffset – wartość przesunięcia w pionie dla pierwszej linii tekstu
- lineSpacing – wysokość linii, pozwala określić odstęp pomiędzy kolejnymi liniami tekstu
W wyniku działania metodu otrzymamy tekst wstawiony na stronę dokumentu, a sama metoda zwróci nam przesunięcie w pionie dla ostatniej linii wstawianego tekstu, dzięki czemu uzyskamy informacje, w którym miejscu wstawić kolejne elementy w dokumencie.