Ниже опубликован перевод заметки Creating Pdf files using Zend Framework Zend_Pdf component. В ней доступно и кратко описано базовое использование компонента Zend_Pdf.

Zend Framework содержит компонент Zend_Pdf, предназначенный для создания pdf-файлов. Этот компонент очень прост в использовании. Сейчас я расскажу, как же его использовать.
Прежде всего, инстанцируем Zend_Pdf:

1
$pdf = new Zend_Pdf();

Если вы хотите открыть существующий pdf-файл и изменить его, используйте следующий код:

1
$pdf = Zend_Pdf::load(‘path/to/file.pdf’);

Для сохранения файла используйте следующий код:

1
$pdf->save(‘path/to/file.pdf’);

Для обновления существующего файла напишите:

1
$pdf->save(‘path/to/file.pdf’,true);

Или вы можете вывести файл в браузер:

1
$pdf->render();

Добавление страницы в pdf-файл:

1
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER);

или

1
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);

Удаление страницы из документа:

1
unset($pdf->pages[$id]);

В случае написания текста на странице вам понадобится следующий код:

1
$page=$pdf->pages[0];

Таким образом мы получаем первую страницу

1
2
3
4
5
6
7
8
9
10
$style = new Zend_Pdf_Style();
$style->setLineColor(new Zend_Pdf_Color_Rgb(0,0,0));

$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_TIMES);

$style->setFont($font,12);

$page->setStyle($style);

$page->drawText(‘example text here’,100,($page->getHeight()-100));

Прежде всего, мы получаем первую страницу нашего документа. После этого мы инстанцируем Zend_Pdf_Style и указываем цвет текста, который мы будем использовать. При помощи класса Zend_Pdf_Font мы выбираем стиль шрифта.
И нам остаётся только написать сам текст на странице.
Это всё. Просто, не правда ли?

4 Comments

  1. OldFornit says:

    Доброго.
    А как можно побороть проблему с кодировками при генерации pdf-ок?

  2. Snowcore says:

    Не понравилась статья – все в разброс и никакой конкретики.
    Лучше все это рассмотреть на примере создания конкретного PDF документа (step by step)

  3. Alexey says:

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

    В дополнение к статье:

    Пример использования Zend_Pdf для русского языка.
    1. Подготовка
    В корневой папке приложения создайте подкаталог /fonts
    Скопируйте в каталог приложения /fonts необходимые Вам в pdf файле шрифты : arial.ttf, cour.ttf
    2. Текст примера, отображающего русский PDF (без использования Zend_Application) занесите в файл index.php:

    pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);

    $mypage=$mypdf->pages['0'];

    $style=new Zend_Pdf_Style();
    $style->setLineColor(new Zend_Pdf_Color_Rgb(0,0,0));

    $font=Zend_Pdf_Font::fontWithPath(‘./fonts/arial.ttf’); // Определили шрифт Ариал
    $style->setFont($font,14); // 14-й шрифт
    $mypage->setStyle($style);

    $mypage->drawText(‘Простой PDF с русским текстом’,100,($mypage->getHeight()-100));

    $font1=Zend_Pdf_Font::fontWithPath(‘./fonts/cour.ttf’); // Определили шрифт Courier
    $style->setFont($font1,9); // Определили размер 9
    $mypage->setStyle($style);

    $mypage->drawText(‘Русский текст в рамке для отображения в отчете’,20,110);

    $mypage->drawRectangle(10,10,400,120,Zend_Pdf_Page::SHAPE_DRAW_STROKE);

    // Показываем его в браузере

    header(‘Content-type: application/pdf’);

    echo $mypdf->render();

    Удачи!!!

  4. Alexey says:

    еще раз текст примера

    // Демонстрация использования Zend_Pdf компонента

    require_once ‘Zend/Pdf.php’; //Включили класс PDF

    $mypdf=new Zend_Pdf(); // Создали инстанцию PDF документа
    $mypdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);

    $mypage=$mypdf->pages['0'];

    $style=new Zend_Pdf_Style();
    $style->setLineColor(new Zend_Pdf_Color_Rgb(0,0,0));

    $font=Zend_Pdf_Font::fontWithPath(‘./fonts/arial.ttf’); // Определили шрифт Ариал
    $style->setFont($font,14); // 14-й шрифт
    $mypage->setStyle($style);

    $mypage->drawText(‘Простой PDF с русским текстом’,100,($mypage->getHeight()-100));

    $font1=Zend_Pdf_Font::fontWithPath(‘./fonts/cour.ttf’); // Определили шрифт Courier
    $style->setFont($font1,9); // Определили размер 9
    $mypage->setStyle($style);

    $mypage->drawText(‘Русский текст в рамке для отображения в отчете’,20,110);

    $mypage->drawRectangle(10,10,400,120,Zend_Pdf_Page::SHAPE_DRAW_STROKE);

    // Показываем его в браузере

    header(‘Content-type: application/pdf’);

    echo $mypdf->render();

Leave a Reply