Interaktive FeaturesZieleEin Ziel definiert eine spezielle Sicht eines Dokuments, bestehend aus den folgenden Elementen:
Ziele können mit Outline Elementen ((Document Outline (bookmarks)), Hinweisen (Annotations), oder Aktionen (Actions) verknüpft werden. In jedem Fall spezifiziert das Ziel die Sicht des Dokuments welche dargestellt werden soll wenn das Outline Element oder der Hinweis geöffnet, oder die Aktion durchgeführt werden soll. Zusätzlich kann eine optionale Dokument Öffnungs-Aktion spezifiziert werden. Unterstützte ZieltypenDie folgenden Typen werden von der Zend_Pdf Komponente unterstützt. Zend_Pdf_Destination_ZoomZeigt die spezifizierte Seite, mit den Koordinaten (Links, Oben) positioniert an der oberen-linken Ecke des Fensters und dem Inhalt der Seite vergrößert auf den Zoom Faktor. Zielobjekte können durch Verwendung der Zend_Pdf_Destination_Zoom::create($page, $left = null, $top = null, $zoom = null) Methode erstellt werden. Wobei:
NULL, wenn es für die $left, $top or $zoom Parameter spezifiziert wird, heißt "aktueller Wert der Viewer Anwendung". Die Zend_Pdf_Destination_Zoom Klasse bietet die folgenden Methoden an:
Zend_Pdf_Destination_FitZeigt die spezifizierte Seite an, wobei der Inhalt soweit vergrössert wird, dass er auf die komplette Seite passt sowohl Horizontal als auch Vertikal im Fenster. Wenn die benötigten horizontalen und vertikalen Vergrösserungsfaktoren unterschiedlich sind, wird der kleinere der zwei verwendet, und die Seite im Fenster mit der anderen Dimension zentriert. Das Zielobjekt kann erstellt werden indem die Zend_Pdf_Destination_Fit::create($page) Methode verwendet wird. Wobei $page eine Zielseite ist (ein Zend_Pdf_Page Objekt oder eine Seitennummer). Zend_Pdf_Destination_FitHorizontallyZeigt die spezifizierte Seite, mit den vertikalen Koordinaten an der oberen Ecke des Fensters positioniert, an und den Inhalt der Seite gerade genug vergrössert damit die komplette Breite der Seite in das Fenster passt. Das Zielobjekt kann erstellt werden indem die Zend_Pdf_Destination_FitHorizontally::create($page, $top) Methode verwendet wird. Wobei:
Die Klasse Zend_Pdf_Destination_FitHorizontally bietet auch die folgenden Methoden:
Zend_Pdf_Destination_FitVerticallyZeigt die spezifizierte Seite, mit den horizontalen Koordinaten an der oberen Ecke des Fensters positioniert, an und den Inhalt der Seite gerade genug vergrössert damit die komplette Höhe der Seite in das Fenster passt. Das Zielobjekt kann erstellt werden indem die Zend_Pdf_Destination_FitVertically::create($page, $left) Methode verwendet wird. Wobei:
Die Klasse Zend_Pdf_Destination_FitVertically bietet auch die folgenden Methoden:
Zend_Pdf_Destination_FitRectangleZeigt die spezifizierte Seite an, wobei der Inhalt gerade genug vergrössert ist damit er komplett in das Rechteck passt das durch die Koordinaten links, unten, rechts und oben spezifiziert wird sowohl horizontal als auch vertikal. Wenn die notwendigen horizontalen und vertikalen Vergrösserungsfaktoren unterschiedlich sind, wird der kleinere der zwei verwendet, wobei das Rechteck im Fenster durch Verwendung der andern Dimension zentriert wird. Das Zielobjekt kann erstellt werden indem die Zend_Pdf_Destination_FitRectangle::create($page, $left, $bottom, $right, $top) Methode verwendet wird. Wobei:
Die Klasse Zend_Pdf_Destination_FitRectangle bietet auch die folgenden Methoden an:
Zend_Pdf_Destination_FitBoundingBoxZeigt die spezifizierte Seite an, wobei der Inhalt gerade genug vergrössert ist damit die Zeichenbox komplett in das Fenster passt, sowohl horizontal als auch vertikal. Wenn die notwendigen horizontalen und vertikalen Vergrösserungsfaktoren unterschiedlich sind, wird der kleinere der zwei verwendet, wobei die Zeichenbox im Fenster durch Verwendung der andern Dimension zentriert wird. Das Zielobjekt kann erstellt werden indem die Zend_Pdf_Destination_FitBoundingBox::create($page, $left, $bottom, $right, $top) Methode verwendet wird. Wobei $page eine Zielseite ist (ein Zend_Pdf_Page Objekt oder eine Seitenzahl). Zend_Pdf_Destination_FitBoundingBoxHorizontallyZeigt die spezifizierte Seite, mit den vertikalen Koordinaten an der oberen Ecke des Fensters positioniert, an und den Inhalt der Seite gerade genug vergrössert damit die komplette Breite der Zeichenbox in das Fenster passt. Das Zielobjekt kann erstellt werden indem die Zend_Pdf_Destination_FitBoundingBoxHorizontally::create($page, $top) Methode verwendet wird. Wobei
Die Klasse Zend_Pdf_Destination_FitBoundingBoxHorizontally bietet auch die folgenden Methoden:
Zend_Pdf_Destination_FitBoundingBoxVerticallyZeigt die spezifizierte Seite, mit den horizontalen Koordinaten an der oberen Ecke des Fensters positioniert, an und den Inhalt der Seite gerade genug vergrössert damit die komplette Höhe der Zeichenbox in das Fenster passt. Das Zielobjekt kann erstellt werden indem die Zend_Pdf_Destination_FitBoundingBoxVertically::create($page, $left) Methode verwendet wird. Wobei
Die Klasse Zend_Pdf_Destination_FitBoundingBoxVertically bietet auch die folgenden Methoden:
Zend_Pdf_Destination_NamedAlle oben aufgeführten Ziele sind "Explizite Ziele". Zusätzlich dazu können PDF Dokumente ein Verzeichnis solcher Ziele enthalten welche verwendet werden können um nach ausserhalb des PDF's zu referenzieren (z.B. 'http://www.mycompany.com/document.pdf#chapter3'). Zend_Pdf_Destination_Named Objekte erlauben es auf Ziele der benannten Zielverzeichnisse des Dokuments zu referenzieren. Benannte Zielobjekte können erstellt werden indem man die Zend_Pdf_Destination_Named::create(string $name) Methode verwendet. Die Klasse Zend_Pdf_Destination_Named bietet eine einzige zusätzliche Methode: String getName(); Verarbeitung von Zielen auf Level des DokumentsDie Klasse Zend_Pdf bietet ein Set von Methoden zur Verarbeitung von Zielen. Jedes Zielobjekt (inklusive benannter Ziele) kann aufgelöst werden indem die Methode resolveDestination($destination) verwendet wird. Sie gibt ein passendes Zend_Pdf_Page Objekt zurück wenn das Zielobjekt gefunden wurde, andernfalls NULL. Die Methode Zend_Pdf::resolveDestination() nimmt auch einen optionalen booleschen Parameter $refreshPageCollectionHashes, der standardmäßig TRUE ist. Er zwingt das Zend_Pdf Objekt die Hashes der internen Kollektion der Seiten neu zu laden da die Liste der Seiten des Dokuments vom Benutzer aktualisiert sein könnte indem die Eigenschaft Zend_Pdf::$pages verwendet wird (Arbeiten mit Seiten). Das kann aus Gründen der Performance ausgeschaltet werden, wenn bekannt ist das die Liste der Seiten des Dokuments seit der letzten Anfragemethode nicht geändert wurde. Die komplette Liste der benannten Ziele kann empfangen werden indem die Methode Zend_Pdf::getNamedDestinations() verwendet wird. Sie gibt ein Array von Zend_Pdf_Target Objekten zurück, welche entweder explizite Ziele oder eine GoTo Aktion sind (Aktionen). Die Methode Zend_Pdf::getNamedDestination(string $name) gibt spezifizierte benannte Ziele zurück (ein explizites Ziel oder eine GoTo Aktion). Das Verzeichnis der benannten Ziele des PDF Dokuments kann mit der Methode Zend_Pdf::setNamedDestination(string $name, $destination) aktualisiert werden, wobei $destination entweder ein explizites Ziel ist (jedes Ziel ausser Zend_Pdf_Destination_Named) oder eine GoTo Aktion. Wenn NULL statt $destination spezifiziert ist, werden die spezifizierten benannten Ziele entfernt.
Example #1 Beispiel für die Verwendung von Zielen
AktionenStatt einfach zu einem Ziel im Dokument zu springen, kann ein Hinweis oder Outline Element eine Aktion für die Viewer Anwendung spezifizieren die auszuführen ist, wie das starten einer Anwendung, das Abspielen eines Sounds, oder der Änderung der Sichtweise des Hinweis Status. Unterstützte Typen von AktionenDie folgenden Typen von Aktionen werden beim Laden vom PDF Dokument erkannt:
Nur Zend_Pdf_Action_GoTo und Zend_Pdf_Action_URI Aktionen können aktuell von Benutzern erstellt werden. Goto Aktionen können erstellt werden indem die Methode Zend_Pdf_Action_GoTo::create($destination) verwendet wird wobei $destination ein Zend_Pdf_Destination Objekt oder ein String ist der verwendet werden kann um ein benanntes Ziel zu identifizieren. Die Methode Zend_Pdf_Action_URI::create($uri[, $isMap]) muss verwendet werden um eine URI Aktion zu erstellen (siehe die API Dokumentation für Details). Der optionale $isMap Parameter wird standardmäßig auf FALSE gesetzt. Es unterstützt auch die folgenden Methoden: Verketten von AktionenAktions Objekte können verkettet werden indem die öffentliche Eigenschaft Zend_Pdf_Action::$next verwendet wird. Sie ist ein Array von Zend_Pdf_Action Objekten, welche auch Unter-Aktionen haben können. Die Zend_Pdf_Action Klasse unterstützt das RecursiveIterator Interface damit Kinder-Aktionen iterativ durchlaufen werden können:
Dokument Öffnen AktionEine spezielle Öffnen Aktion kann durch ein Ziel spezifiziert werden das angezeigt werden soll, oder eine Aktion die ausgeführt werden soll wenn das Dokument geöffnet wird. Die Zend_Pdf_Target Zend_Pdf::getOpenAction() Methode gibt die aktuelle Dokument Öffnen Aktion zurück (oder NULL wenn die Öffnen Aktion nicht gesetzt ist). Die setOpenAction(Zend_Pdf_Target $openAction = null) Methode setzt eine Dokument Öffnen Aktion oder löscht diese wenn $openAction NULL ist. Dokument Outline (Bookmarks)Ein PDF Dokument kann optional ein Dokument Outline am Schirm anzeigen, welcher es dem Benutzer erlaubt interaktiv von einem Teil des Dokuments zu einem anderen zu navigieren. Der Outline besteht aus einer baum-strukturierten Hierarchie von Outline Elementen (manchmal Bookmarks genannt), welche als visuelle Tabelle des Inhalts fungieren um dem Benutzer die Struktur des Dokuments anzuzeigen. Der Benutzer kann individuelle Elemente interaktiv öffnen und schließen indem er Sie mit der Maus anklickt. Wenn ein Element geöffnet ist, werden seine unmittelbaren Kinder in der Hierarchie auf dem Schirm sichtbar; jedes Kind kann seinerseits geöffnet und geschlossen werden, das weitere Teile der Hierarchie selektiv anzeigt oder versteckt. Wenn ein Element geschlossen wird, werden alle seine abhängigen Elemente in der Hierarchie versteckt. Das Klicken auf einen Text von irgendeinem sichtbaren Element aktiviert dieses Element, was dazu führt das die anzeigende Anwendung zum Ziel springt oder eine mit dem Element assoziierte Aktion ausführt. Die Klasse Zend_Pdf bietet eine öffentliche Eigenschaft $outlines welche ein Array von Zend_Pdf_Outline Objekten ist.
Outline Attribute können mit Hilfe der folgenden Methoden empfangen oder gesetzt werden:
Ein neues Outline kann auf folgenden zwei Wegen erstellt werden:
Jedes Outline Objekt kann Kinder-Outline Elemente haben die in der öffentlichen Eigenschaft Zend_Pdf_Outline::$childOutlines aufgelistet werden. Das ist ein Array von Zend_Pdf_Outline Objekten. Deshalb sind Outlines als Baum organisiert. Die Klasse Zend_Pdf_Outline implementiert das RecursiveArray Interface damit man durch Kinder-Outlines rekursiv iterieren kann indem RecursiveIteratorIterator verwendet wird:
AnhängeEin Anhang assoziiert ein Objekt wie eine Notiz, einen Sound, oder einen Film mit einem Ort auf einer Seite in einem PDF Dokument, oder bietet einen Weg um mit dem Benutzer zu interagieren, durch Verwendung von Maus und Tastatur. Alle Anhänge werden durch die abstrakte Klasse Zend_Pdf_Annotation repräsentiert. Anhänge können einer Seite angehängt werden indem die Methode Zend_Pdf_Page::attachAnnotation(Zend_Pdf_Annotation $annotation) verwendet wird. Aktuell können drei Typen von Anhängen von Benutzern erstellt werden:
Ein Link-Anhang repräsentiert entweder einen Hypertext Link oder ein Ziel anderswo im Dokument oder eine Aktion die ausgeführt werden soll. Ein Text Anhang repräsentiert eine "schnelle Notiz" die an einem Punkt im PDF Dokument angehängt ist. Ein File Anhang enthält eine Referenz zu einer Datei. Die folgenden Methoden können von allen Typen von Anhängen verwendet werden:
Die Text Anhang Eigenschaft ist ein Text der für den Anhang dargestellt wird oder, wenn dieser Typ von Anhang keinen Text darstellt, eine alternative Beschreibung des Inhalts des Anhangs in einer menschlich lesbaren Form. Link Anhangs Objekte bieten auch zwei zusätzliche Methoden:
|
|