The pages in a PDF document are represented as Zend_Pdf_Page
instances in Zend_Pdf
.
PDF pages either are loaded from an existing PDF or created using the Zend_Pdf
API.
New pages can be created by instantiating new Zend_Pdf_Page
objects directly or by calling
the Zend_Pdf::newPage()
method, which returns a Zend_Pdf_Page
object.
Zend_Pdf::newPage()
creates a page that is already attached to
a document. Unattached pages can't be used with multiple PDF documents,
but they are somewhat more performant.
[5]
The Zend_Pdf::newPage()
method and the Zend_Pdf_Page
constructor take the same
parameters specifying page size. They can take either the size of page ($x, $y) in points (1/72 inch)
or a predefined constant representing a page type:
Zend_Pdf_Page::SIZE_A4
Zend_Pdf_Page::SIZE_A4_LANDSCAPE
Zend_Pdf_Page::SIZE_LETTER
Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE
Document pages are stored in the $pages
public attribute of the Zend_Pdf
class.
The attribute holds an array of Zend_Pdf_Page
objects and completely defines the instances and order of pages.
This array can be manipulated like any other PHP array:
Example 40.4. PDF document pages management
... // Reverse page order $pdf->pages = array_reverse($pdf->pages); ... // Add new page $pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4); // Add new page $pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4); // Remove specified page. unset($pdf->pages[$id]); ...
Existing PDF page can be cloned by creating new Zend_Pdf_Page
object with existing page as a parameter:
Example 40.5. Cloning existing page
... // Store template page in a separate variable $template = $pdf->pages[$templatePageIndex]; ... // Add new page $page1 = new Zend_Pdf_Page($template); $pdf->pages[] = $page1; ... // Add another page $page2 = new Zend_Pdf_Page($template); $pdf->pages[] = $page2; ... // Remove source template page from the documents. unset($pdf->pages[$templatePageIndex]); ...
It's useful if you need several pages to be created using one template.
![]() |
Caution |
---|---|
Important! Cloned page shares some PDF resources with a template page, so it can be used only within the same document as a template page. Modified document can be saved as new one. |
[5] It's a limitation of current Zend Framework version. It will be eliminated in future versions. But unattached pages will always give better (more optimal) result for sharing pages between documents.