11.4. Document pages.

PDF document page abstraction is represented by Zend_Pdf_Page class.

PDF pages either are loaded from existing PDF, or created.

New page can be obtained by creating new Zend_Pdf_Page object or calling Zend_Pdf::newPage() method, which returns Zend_Pdf_Page object. The difference is that Zend_Pdf::newPage() method creates a page, already attached to the document. In difference from unattached pages it can't be used with several PDF documents, but has a little bit better performance. [4]. It's your choice, which approach should be used.

Zend_Pdf::newPage() method and Zend_Pdf_Page constructor take the same set of parameters. It either the size of page ($x, $y) in a points (1/72 inch), or predefined constant, which is treated as a page type:

Document pages are stored in $pages public member of Zend_Pdf class. It's an array of Zend_Pdf_Page objects. It completely defines set and order of document pages and can be manipulated as a common array:

Example 11.4. PDF document pages management.

<?php
...
// Reverse page order
$pdf->pages = array_reverse($pdf->pages);
...
// Add new page
$pdf->pages[] = new Zend_Pad_Page(Zend_Pdf_Const::PAGESIZE_A4);
// Add new page
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Const::PAGESIZE_A4);

// Remove specified page.
unset($pdf->pages[$id]);

...
?>


[4] It's a limitation of V1.0 version of Zend_Pdf module. It will be eliminated in future versions. But unattached pages will always give better (more optimal) result for sharing pages between documents.