Нарисуйте изображение на последней странице, используя Zend PDF? - PullRequest
0 голосов
/ 21 февраля 2012

Я знаю, что есть функция drawImage для рисования изображения. То, что я хочу, - это только напечатать мое изображение на последней странице PDF, внизу. Как я могу это сделать? Это функция:

page->drawImage($image, $imageTopLeft, $imageTop, $imageBottomRight, $imageBottom);

Добавление координат здесь нарисует его на каждой странице в данном месте, не так ли?

Спасибо!

1 Ответ

4 голосов
/ 21 февраля 2012

Если вы создаете свой PDF и Страницы, как это:

$pdf = new Zend_Pdf();

$page1 = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
// set content to this page
$pdf->pages[] = $page1;

$page2 = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
// set content to this page
$pdf->pages[] = $page2;

// and so on ...

Вы можете сделать это:

//Get your last page with $pdf->pages[count($pdf->pages[])-1]

$pdf->pages[count($pdf->pages[])-1]->drawImage($image, $imageTopLeft, $imageTop, $imageBottomRight, $imageBottom);

Если вы хотите найти ширину текста, чтобы настроить другиеэлементы, которые вы можете использовать эту функцию:

    /**
     * Calculate width of given text
     * 
     * @param String $text 
     * @param Zend_Pdf_Resource_Font $font
     * @param int $font_size
     * @return int 
     */
    public function getTextWidth($text, Zend_Pdf_Resource_Font $font, $font_size) {
        $drawing_text = iconv('', 'UTF-16BE', $text);
        $characters = array();
        for ($i = 0; $i < strlen($drawing_text); $i++) {
            $characters[] = (ord($drawing_text[$i++]) << 8) | ord($drawing_text[$i]);
        }
        $glyphs = $font->glyphNumbersForCharacters($characters);
        $widths = $font->widthsForGlyphs($glyphs);
        $text_width = (array_sum($widths) / $font->getUnitsPerEm()) * $font_size;
        return $text_width;
    }

и чем вы вызываете:

$this->getTextWidth('some dinamyc text ', $font, $font_size);
...