Las páginas de un documento PDF se representan como
instancias de Zend_Pdf_Page en Zend_Pdf.
Las páginas PDF se cargan a partir de un PDF
existente o se crean usando la API de Zend_Pdf.
Se pueden crear nuevas páginas instanciando directamente nuevos objetos Zend_Pdf_Page
o llamando al método Zend_Pdf::newPage(),
que devuelve un objeto Zend_Pdf_Page.
Zend_Pdf::newPage() crea una página que ya está adjunta a
un documento. Las páginas adjuntas no pueden usarse con otros documentos PDF
hasta que no se clonen. Vea la sección Clonación
de páginas para más detalles.
El método Zend_Pdf::newPage() y el constructor de
Zend_Pdf_Page reciben los mismos parámetros para especificar
el tamaño de página. Pueden recibir tanto el tamaño de la página ($x, $y) en puntos (1/72 de pulgada) o una
constante predefinida que representa un tipo de página:
Zend_Pdf_Page::SIZE_A4
Zend_Pdf_Page::SIZE_A4_LANDSCAPE
Zend_Pdf_Page::SIZE_LETTER
Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE
Las páginas del documento se almacenan en el atributo público $pages de la
clase Zend_Pdf. El atributo contiene un arreglo de
objetos Zend_Pdf_Page y define completamente las instancias y el
orden de las páginas. Este arreglo puede manipularse como cualquier otro arreglo
PHP:
Ejemplo 55.4. Gestión de páginas de un documento PDF
... // 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]); ...
Una página PDF existente puede duplicarse creando un nuevo
objeto Zend_Pdf_Page con la página existente como parámetro:
Ejemplo 55.5. Duplicación de una página existente
...
// Store template page in a separate variable
$template = $pdf->pages[$templatePageIndex];
...
// Add new page
$page1 = new Zend_Pdf_Page($template);
$page1->drawText('Some text...', $x, $y);
$pdf->pages[] = $page1;
...
// Add another page
$page2 = new Zend_Pdf_Page($template);
$page2->drawText('Another text...', $x, $y);
$pdf->pages[] = $page2;
...
// Remove source template page from the documents.
unset($pdf->pages[$templatePageIndex]);
...
Esto es útil si necesita crear varias páginas usando una plantilla.
![]() |
Precaución |
|---|---|
¡Importante! La página duplicada comparte algunos recursos PDF con una página de plantilla, por lo que solo puede usarse dentro del mismo documento que la página de plantilla. El documento modificado puede guardarse como uno nuevo. |
El operador clone puede usarse para crear una página que no esté adjunta a ningún documento.
Toma más tiempo que duplicar una página ya que necesita copiar todos los objetos dependientes
(fuentes, imágenes y otros recursos utilizados), pero permite usar páginas de distintos documentos
de origen para crear uno nuevo:
Ejemplo 55.6. Clonación de una página existente
$page1 = clone $pdf1->pages[$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;
Si se planea usar varias páginas de plantilla como plantillas, puede resultar más eficiente
utilizar la clase Zend_Pdf_Resource_Extractor, que ofrece la capacidad
de compartir recursos entre páginas clonadas: fuentes, imágenes, etc. (de lo contrario se creará
una nueva copia del recurso para cada página clonada):
Ejemplo 55.7. Clonación de una página existente usando la clase Zend_Pdf_Resource_Extractor
$extractor = new Zend_Pdf_Resource_Extractor();
....
$page1 = $extractor->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;
![[Caution]](images/caution.png)