# Arbeiten mit Seiten

## Erstellen von Seiten

Die Seiten in einem PDF Dokument werden durch `Zend_Pdf_Page` Instanzen in `Zend_Pdf` abgebildet.

PDF Seiten werden entweder aus einem vorhandenen PDF gelesen oder erstellt indem die API von `Zend_Pdf` verwendet wird.

Neue Seiten können durch die Instanzierung neuer `Zend_Pdf_Page` Objekte erstellt werden, entweder direkt oder durch den Aufruf der `Zend_Pdf::newPage()` Methode, die ein `Zend_Pdf_Page` Objekt zurückgibt. `Zend_Pdf::newPage()` erstellt eine Seite die bereits an ein Dokument angehängt ist. Ungebundene Seiten können nicht mit verschiedenen PDF Dokumenten verwendet werden, sind aber etwas schneller. Dies ist eine Einschränkung der aktuellen Zend Framework Version. Sie wird in zukünftigen Versionen beseitigt werden. Aber ungebundene Seiten werden immer ein besseres (also optimaleres) Ergebnis für gemeinsame Benutzung in Dokumenten liefern.

Die `Zend_Pdf::newPage()` Methode und der `Zend_Pdf_Page` Konstruktor benötigen die gleichen Parameter welche die Größe der Seite spezifizieren. Sie können entweder die Seitengröße ($x, $y) in Punkten (1/72 Zoll) nehmen oder eine vordefinierte Konstante, die den Seitentyp repräsentiert:

- Zend_Pdf_Page::SIZE_A4

- Zend_Pdf_Page::SIZE_A4_LANDSCAPE

- Zend_Pdf_Page::SIZE_LETTER

- Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE

Dokumentseiten werden im öffentlichen `$pages` Attribut der `Zend_Pdf` Klasse abgelegt. Das Attribut enthält ein Array mit `Zend_Pdf_Page` Objekten und definiert die komplette Instanz und die Reihenfolge der Seiten. Dieses Array kann wie ein normales PHP Array verändert werden:

### Verwaltung von PDF Dokumentseiten

    ...
    // Umgekehrte Seitenreihenfolge
    $pdf->pages = array_reverse($pdf->pages);
    ...
    // Füge eine neue Seite hinzu
    $pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
    // Füge eine neue Seite hinzu
    $pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);

    // Entferne eine bestimmte Seite
    unset($pdf->pages[$id]);

    ...

## Klonen von Seiten

Bestehende PDF Seiten können durch das Erstellen eines neuen `Zend_Pdf_Page` Objektes geklont werden indem eine existierende Seite als Parameter angegeben wird:

### Klonen bestehender Seiten

    ...
    // Die Template Seite in einer separaten Variable speichern
    $template = $pdf->pages[$templatePageIndex];
    ...
    // Neue Seite hinzufügen
    $page1 = new Zend_Pdf_Page($template);
    $pdf->pages[] = $page1;
    ...

    // Andere Seite hinzufügen
    $page2 = new Zend_Pdf_Page($template);
    $pdf->pages[] = $page2;
    ...

    // Die Quell Template Seite von den Dokumenten entfernen
    unset($pdf->pages[$templatePageIndex]);

    ...

Das ist nützlich wenn verschiedene Seite mit Hilfe eines Templates erstellt werden sollen.

Wichtig! Geklonte Seiten verwenden die gleichen PDF Ressourcen mit der Template Seite. Diese kann also nur innerhalb des gleichen Dokuments als Template Seite verwendet werden. Modifizierte Dokumente können als neue abgespeichert werden.