Trabalhando com PáginasCriação de Página
As páginas em um documento PDF são representadas como instâncias de
Zend_Pdf_Page em Zend_Pdf.
Páginas PDF podem ser carregadas de um PDF
existente ou criadas usando a API de Zend_Pdf.
Novas páginas podem ser criadas instanciando novos objetos
Zend_Pdf_Page diretamente ou chamando o método
Zend_Pdf::newPage(), que retorna um objeto
Zend_Pdf_Page. Zend_Pdf::newPage() cria
uma página já anexada à um documento. Páginas anexadas não podem ser usadas com outros
documentos PDF até que não esteja clonado. Veja a seção Clonagem de página para obter mais detalhes.
O método Zend_Pdf::newPage() e o construtor
Zend_Pdf_Page recebem os mesmos parâmetros de definição do
tamanho da página. Eles podem receber tanto o tamanho da página ($x, $y) em pontos
(1/72 polegadas) quanto uma constante pré-definida representando um tipo de página:
Zend_Pdf_Page::SIZE_A4Zend_Pdf_Page::SIZE_A4_LANDSCAPEZend_Pdf_Page::SIZE_LETTERZend_Pdf_Page::SIZE_LETTER_LANDSCAPE
As páginas de um documento são armazenadas no atributo público $pages
da classe Zend_Pdf. O atributo contém uma matriz de objetos
Zend_Pdf_Page e define completamente as instâncias e ordem das
páginas. Esta matriz pode ser manipulada como qualquer outra matriz do
PHP:
Gerenciamento de páginas de documentos PDFpages = array_reverse($pdf->pages);
...
// Adiciona nova página
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
// Adiciona nova página
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
// Remove uma página específica
unset($pdf->pages[$id]);
...
]]>Clonagem de página
Páginas PDF podem ser duplicadas através da criação de um novo objeto
Zend_Pdf_Page com uma página já existente como parâmetro:
Duplicando páginas existentespages[$templatePageIndex];
...
// Adiciona nova página
$page1 = new Zend_Pdf_Page($template);
$page1->drawText('Algum texto...', $x, $y);
$pdf->pages[] = $page1;
...
// Adiciona outra página
$page2 = new Zend_Pdf_Page($template);
$page2->drawText('Outro texto...', $x, $y);
$pdf->pages[] = $page2;
...
// Remove a fonte da página template dos documentos
unset($pdf->pages[$templatePageIndex]);
...
]]>
É útil caso você precise criar diversas páginas usando um template.
Importante! Uma página duplicada compartilha alguns recursos do
PDF com uma página template, então ela só pode ser usada no mesmo
documento como uma página template. Um documento modificado pode ser salvo como um
novo documento.
clone operator may be used to create page which is not attached to any
document. It takes more time than duplicating page since it needs to copy all dependent
objects (used fonts, images and other resources), but it allows to use pages from
different source documents to create new one:
Cloning existing pagepages[$templatePageIndex1];
$page2 = clone $pdf2->pages[$templatePageIndex2];
$page1->drawText('Some text...', $x, $y);
$page2->drawText('Another text...', $x, $y);
...
$pdf = new Zend_Pdf();
$pdf->pages[] = $page1;
$pdf->pages[] = $page2;
]]>
If several template pages are planned to be used as templates then it could be more
efficient to utilize Zend_Pdf_Resource_Extractor class which
gives an ability to share resources between cloned pages - fonts, images, etc.
(otherwise new resource copy will be created for each cloned page):
Cloning existing page using Zend_Pdf_Resource_Extractor class
clonePage($pdf->pages[$templatePageIndex1]);
$page2 = $extractor->clonePage($pdf->pages[$templatePageIndex2]);
$page1->drawText('Some text...', $x, $y);
$page2->drawText('Another text...', $x, $y);
...
$pdf = new Zend_Pdf();
$pdf->pages[] = $page1;
$pdf->pages[] = $page2;
]]>