Working with Pages - Zend_Pdf

Working with Pages

Page Creation

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. [1]

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


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 #1 PDF document pages management

  1. ...
  2. // Reverse page order
  3. $pdf->pages = array_reverse($pdf->pages);
  4. ...
  5. // Add new page
  6. $pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
  7. // Add new page
  8. $pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
  10. // Remove specified page.
  11. unset($pdf->pages[$id]);
  13. ...

Page cloning

Existing PDF page can be cloned by creating new Zend_Pdf_Page object with existing page as a parameter:

Example #2 Cloning existing page

  1. ...
  2. // Store template page in a separate variable
  3. $template = $pdf->pages[$templatePageIndex];
  4. ...
  5. // Add new page
  6. $page1 = new Zend_Pdf_Page($template);
  7. $pdf->pages[] = $page1;
  8. ...
  10. // Add another page
  11. $page2 = new Zend_Pdf_Page($template);
  12. $pdf->pages[] = $page2;
  13. ...
  15. // Remove source template page from the documents.
  16. unset($pdf->pages[$templatePageIndex]);
  18. ...

It's useful if you need several pages to be created using one template.


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.

[1] 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.


© 2006-2018 by Zend, a Rogue Wave Company. Made with by awesome contributors.

This website is built using zend-expressive and it runs on PHP 7.