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.
