PDF-Funktionen
Einführung
PDF-Dateien lassen sich in PHP mithilfe der PDFlib-Bibliothek erzeugen. Die PDFlib-Bibliothek stammt ursprünglich von Thomas Merz und wurde dann von der » PDFlib GmbH übernommen.
Die vorliegende Beschreibung gibt nur eine kurze Übersicht über die in PDFlib verfügbaren Funktionen. Eine ausführliche Behandlung der einzelnen Funktionen finden Sie im PDFlib-Referenzhandbuch, das in allen PDFlib-Paketen der PDFlib GmbH enthalten ist. Das PDFlib-Referenzhandbuch liefert nicht nur eine detaillierte Übersicht über alle Eigenschaften von PDFlib, sondern auch eine stets aktuelle Beschreibung aller Funktionen.
Zum schnellen Einstieg sollten Sie sich unbedingt die Code-Beispiele ansehen, die in jedem PDFlib-Paket enthalten sind. Die Code-Beispiele zeigen die elementare Ausgabe von Text, Vektorgrafik und Rasterbildern sowie weiterführende Funktionen, z.B. zum PDF-Import (PDI).
Alle Funktionen haben in PDFlib und im PHP-Modul identische Funktionsnamen und -parameter. Sofern nicht anders konfiguriert, werden Längen- und Koordinatenangaben in PostScript-Punkten gemessen. Ein Zoll hat normalerweise 72 PostScript-Punkte, dies hängt jedoch von der Auflösung der Ausgabe ab. Eine ausführliche Beschreibung des Koordinatensystems finden Sie im PDFlib-Referenzhandbuch, das in der PDFlib-Distribution enthalten ist.
Ab Version 6 bietet PDFlib zusätzlich zum funktionsorientierten API für PHP 4 ein ein objektorientiertes API für PHP 5. Die Verwendung unterscheidet sich im wesentlichen in folgenden Punkten:
In PHP 4 müssen Sie sich zunächst eine PDF-Ressource besorgen, zum Beispiel mit folgenden Funktionsaufruf:
$p = PDF_new().
Die erhaltene PDF-Ressource verwenden Sie dann als ersten Parameter in allen weiteren Funktionsaufrufen, so zum Beipiel in:
PDF_begin_document($p, "", "").
In PHP 5 dagegen wird mit folgendem Funktionsaufruf ein PDFlib-Objekt erzeugt:
$p = new PDFlib().
Dieses Objekt enthält alle PDFlib-API-Funktionen als Methoden, zum Beispiel:
$p->begin_document("", "").
Zudem wurden in PHP 5 Exceptions eingeführt. Diese werden von PDFlib ab Version 6 ebenfalls unterstützt.
Weitere Informationen finden Sie in den Beispielen weiter unten.
Hinweis: Wenn Sie an weiterer frei verfügbarer Software zur PDF-Erzeugung interessiert sind, die keine externe PDF-Bibliothek verwendet, können Sie sich in dieser FAQ informieren.
Anforderungen
PDFlib Lite ist als Open Source verfügbar. Die Lizenz von PDFlib Lite erlaubt den kostenlosen Einsatz aber nur unter bestimmten Bedingungen. PDFlib Lite unterstützt eine Teilmenge von PDFlib angebotenen Funktionen; Einzelheiten hierzu finden Sie auf der PDFlib-Website. Die PDFlib-Vollversion kann von » https://www.pdflib.com/products/pdflib-family/ heruntergeladen werden. Zum kommerziellen Einsatz müssen Sie jedoch eine Lizenz erwerben.
Anmerkungen zu älteren PDFlib-Versionen
PDFlib vor Version 3 wird von PHP 4 nach 9. März 2000 nicht mehr unterstützt.
PDFlib ab Version 4 wird von PHP ab Version 4.3 unterstützt.
Installation
Diese » PECL Erweiterung ist nicht Teil von PHP. Zusätzliche Informationen, wie neue Releases, Downloads Quelldateien, Maintainerinformation und ein CHANGELOG finden Sie hier: » https://pecl.php.net/package/pdflib.
Um diese Funktionen in PHP < 4.3.9 zu nutzen, müssen Sie PHP mit --with-pdflib[=DIR] kompilieren. DIR ist das PDFlib-Installationsverzeichnis, standardmäßig /usr/local.
Ab PHP 4.3.9 müssen Sie diese Erweiterung über » PEAR mit folgendem Befehl installieren: pear install pdflib.
Resource Typen
Diese Erweiterung definiert keine Resource-Typen.
Anmerkungen zu veralteten PDF-Funktionen
Seit PHP 4.0.5 wird die PHP-Erweiterung für PDFlib von der PDFlib GmbH offiziell unterstützt. Das bedeutet, dass alle im PDFlib-Referenzhandbuch beschriebenen Funktionen von PHP 4 mit den beschriebenen Parametern und der beschriebenen Funktionalität unterstützt werden. Seit PDFlib Version 5.0.4 müssen alle Parameter auch übergeben werden. Zur Kompatibilität unterstützt PDFlib weiterhin die meisten der inzwischen veralteten Funktionen, diese sollten jedoch durch entsprechende neue Funktionen ersetzt werden. PDFlib GmbH bietet keinerlei Unterstützung bei Problemen mit veralteten Funktionen. Die vorliegende Beschreibung kennzeichnet veraltete Funktionen und gibt die stattdessen zu verwendenden Funktionen an.
Beispiele
Die meisten Funktionen sind einfach zu verwenden. Sobald Sie ein PDF-Dokument erstellt haben, ist die schwierigste Aufgabe schon erledigt. Das folgende Code-Beispiel soll Ihnen den Einstieg erleichtern. Es wurde für PHP 4 entwickelt und erstellt eine einseitige Datei namens hello.pdf. Das Beispiel definiert den Inhalt einiger Dokumentinfofelder, lädt die Schrift Helvetica-Bold und gibt den Text "Hello world! (says PHP)" aus.
Example#1 Beispiel "Hello World" der PDFlib-Distribution für PHP 4
<?php
$p = PDF_new();
/* open new PDF file; insert a file name to create the PDF on disk */
if (PDF_begin_document($p, "", "") == 0) {
die("Error: " . PDF_get_errmsg($p));
}
PDF_set_info($p, "Creator", "hello.php");
PDF_set_info($p, "Author", "Rainer Schaaf");
PDF_set_info($p, "Title", "Hello world (PHP)!");
PDF_begin_page_ext($p, 595, 842, "");
$font = PDF_load_font($p, "Helvetica-Bold", "winansi", "");
PDF_setfont($p, $font, 24.0);
PDF_set_text_pos($p, 50, 700);
PDF_show($p, "Hello world!");
PDF_continue_text($p, "(says PHP)");
PDF_end_page_ext($p, "");
PDF_end_document($p, "");
$buf = PDF_get_buffer($p);
$len = strlen($buf);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=hello.pdf");
print $buf;
PDF_delete($p);
?>
Das folgende Code-Beispiel ist in der PDFlib-Distribution für PHP 5 enthalten. Es verwendet die in PHP 5 erstmalig verfügbare Funktionalität zur Ausnahmebehandlung und Objektkapselung. Das Beispiel erstellt eine einseitige Datei namens hello.pdf. Es definiert den Inhalt einiger Dokumentinfofelder, lädt die Schrift Helvetica-Bold und gibt den Text "Hello world! (says PHP)" aus.
Example#2 Beispiel "Hello World" der PDFlib-Distribution für PHP 5
<?php
try {
$p = new PDFlib();
/* open new PDF file; insert a file name to create the PDF on disk */
if ($p->begin_document("", "") == 0) {
die("Error: " . $p->get_errmsg());
}
$p->set_info("Creator", "hello.php");
$p->set_info("Author", "Rainer Schaaf");
$p->set_info("Title", "Hello world (PHP)!");
$p->begin_page_ext(595, 842, "");
$font = $p->load_font("Helvetica-Bold", "winansi", "");
$p->setfont($font, 24.0);
$p->set_text_pos(50, 700);
$p->show("Hello world!");
$p->continue_text("(says PHP)");
$p->end_page_ext("");
$p->end_document("");
$buf = $p->get_buffer();
$len = strlen($buf);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=hello.pdf");
print $buf;
}
catch (PDFlibException $e) {
die("PDFlib exception occurred in hello sample:\n" .
"[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " .
$e->get_errmsg() . "\n");
}
catch (Exception $e) {
die($e);
}
$p = 0;
?>
Inhaltsverzeichnis
- PDF_activate_item — Aktiviert Strukturelement oder anderen Dokumentbestandteil
- PDF_add_annotation — Fügt Notiz hinzu [veraltet]
- PDF_add_bookmark — Fügt Lesezeichen für aktuelle Seite ein [veraltet]
- PDF_add_launchlink — Fügt Webverknüpfung auf aktueller Seite ein [veraltet]
- PDF_add_locallink — Fügt Verknüpfung auf aktueller Seite ein [veraltet]
- PDF_add_nameddest — Erzeugt benanntes Ziel
- PDF_add_note — Fügt Notiz auf aktueller Seite ein [veraltet]
- PDF_add_outline — Fügt Lesezeichen für aktuelle Seite ein [veraltet]
- PDF_add_pdflink — Fügt Dateiverknüpfung auf aktueller Seite ein [veraltet]
- PDF_add_table_cell — Fügt eine Zelle zu einer neuen oder vorhandenen Tabelle hinzu
- PDF_add_textflow — Erzeugt Textflussobjekt oder fügt Text zu Textfluss hinzu
- PDF_add_thumbnail — Fügt Piktogramm für aktuelle Seite ein
- PDF_add_weblink — Fügt Web-Verknüpfung auf aktueller Seite ein [veraltet]
- PDF_arc — Zeichnet Kreissegment gegen Uhrzeigersinn
- PDF_arcn — Zeichnet Kreissegment im Uhrzeigersinn
- PDF_attach_file — Fügt Dateianhang auf aktueller Seite ein [veraltet]
- PDF_begin_document — Erstellt neue PDF-Datei
- PDF_begin_font — Beginnt Definition einer Type-3-Schrift
- PDF_begin_glyph — Beginnt Type-3-Glyphendefinition
- PDF_begin_item — Öffnet Strukturelement oder anderen Dokumentbestandteil
- PDF_begin_layer — Beginnt Ebene
- PDF_begin_page_ext — Beginnt neue Seite
- PDF_begin_page — Beginnt neue Seite [veraltet]
- PDF_begin_pattern — Beginnt Definition eines Füllmusters
- PDF_begin_template_ext — Beginnt Template-Definition
- PDF_begin_template — Beginnt Template-Definition [veraltet]
- PDF_circle — Zeichnet Kreis
- PDF_clip — Verwendet aktuellen Pfad als Clipping-Pfad
- PDF_close_image — Schließt Bild
- PDF_close_pdi_page — Schließt Seiten-Handle
- PDF_close_pdi — Schließt PDF-Importdokument [veraltet]
- PDF_close — Schließt PDF-Ressource [veraltet]
- PDF_closepath_fill_stroke — Schließt, zeichnet und füllt Pfad
- PDF_closepath_stroke — Schließt und zeichnet Pfad
- PDF_closepath — Schließt aktuellen Pfad
- PDF_concat — Konkateniert Matrix zur Transformationsmatrix
- PDF_continue_text — Gibt Text in nächster Zeile aus
- PDF_create_3dview — Erzeugt 3D-View
- PDF_create_action — Erzeugt Aktion für Objekte und Events
- PDF_create_annotation — Erzeugt rechteckige Anmerkung
- PDF_create_bookmark — Erstellt Lesezeichen
- PDF_create_field — Erstellt Formularfeld
- PDF_create_fieldgroup — Erstellt Formularfeldgruppe
- PDF_create_gstate — Erzeugt Grafikzustandsobjekt
- PDF_create_pvf — Erzeugt virtuelle PDFlib-Datei
- PDF_create_textflow — Erzeugt Textflussobjekt
- PDF_curveto — Zeichnet Bézier-Kurve
- PDF_define_layer — Erzeugt Ebenendefinition
- PDF_delete_pvf — Löscht virtuelle PDFlib-Datei
- PDF_delete_table — Löscht Tabellenobjekt
- PDF_delete_textflow — Löscht Textflussobjekt
- PDF_delete — Löscht PDF-Objekt
- PDF_encoding_set_char — Fügt Glyphennamen und/oder Unicode-Wert hinzu
- PDF_end_document — Schließt PDF-Dokument
- PDF_end_font — Beendet Type-3-Schriftdefinition
- PDF_end_glyph — Beendet Type-3-Glyphendefinition
- PDF_end_item — Schließt Strukturelement oder anderen Dokumentbestandteil
- PDF_end_layer — Deaktiviert alle aktiven Layer
- PDF_end_page_ext — Beendet Seite
- PDF_end_page — Unterbricht Seitenausgabe
- PDF_end_pattern — Beendet Füllmusterdefinition
- PDF_end_template — Beendet Template-Definition
- PDF_endpath — Beendet Pfad
- PDF_fill_imageblock — Füllt Image-Block mit variablen Daten
- PDF_fill_pdfblock — Füllt PDF-Block mit variablen Daten
- PDF_fill_stroke — Zeichnet und füllt Pfad
- PDF_fill_textblock — Füllt Text-Block mit variablen Daten
- PDF_fill — Füllt Pfad
- PDF_findfont — Bereitet Schrift vor [veraltet]
- PDF_fit_image — Platziert Bild oder Template
- PDF_fit_pdi_page — Platziert importierte PDF-Seite
- PDF_fit_table — Platziert Tabelle auf der Seite
- PDF_fit_textflow — Passt Textfluss in rechteckigen Bereich ein
- PDF_fit_textline — Platziert einzelne Textzeile
- PDF_get_apiname — Ermittelt Namen von gescheiterter API-Funktion
- PDF_get_buffer — Holt PDF-Ausgabepuffer
- PDF_get_errmsg — Ermittelt Fehlertext
- PDF_get_errnum — Ermittelt Fehlernummer
- PDF_get_font — Ermittelt Schrift [veraltet]
- PDF_get_fontname — Ermittelt Schriftnamen [veraltet]
- PDF_get_fontsize — Schriftbehandlung [veraltet]
- PDF_get_image_height — Ermittelt Bildhöhe [veraltet]
- PDF_get_image_width — Ermittelt Bildbreite [veraltet]
- PDF_get_majorversion — Ermittelt Major-Versionsnummer [veraltet]
- PDF_get_minorversion — Ermittelt Minor-Versionsnummer [veraltet]
- PDF_get_parameter — Ermittelt String-Parameter
- PDF_get_pdi_parameter — Ermittelt String-PDI-Dokumentparameter [veraltet]
- PDF_get_pdi_value — Ermittelt numerischen PDI-Dokumentparameter [veraltet]
- PDF_get_value — Ermittelt numerischen Parameter
- pdf_info_font — Fragt Einzelheiten zu geladenem Font ab
- PDF_info_matchbox — Fragt Matchbox-Informationen ab
- PDF_info_table — Fragt tabellenspezifische Informationen ab
- PDF_info_textflow — Ermittelt Zustand eines Textflusses
- PDF_info_textline — Formatiert Textzeile und ermittelt Metrikdaten
- PDF_initgraphics — Setzt Grafikzustand zurück
- PDF_lineto — Zeichnet Linie
- PDF_load_3ddata — Öffnet 3D-Modelldatei
- PDF_load_font — Sucht und bereitet Schrift vor
- PDF_load_iccprofile — Sucht und bereitet ICC-Profil vor
- PDF_load_image — Öffnet Bilddatei
- PDF_makespotcolor — Erstellt Schmuckfarbe
- PDF_moveto — Setzt aktuelle Position
- PDF_new — Erzeugt PDFlib-Objekt
- PDF_open_ccitt — Öffnet CCITT-Rasterbild [veraltet]
- PDF_open_file — Erzeugt PDF-Datei [veraltet]
- PDF_open_gif — Öffnet GIF-Rasterbild [veraltet]
- PDF_open_image_file — Öffnet Bilddatei [veraltet]
- PDF_open_image — Ermittelt Bilddaten [veraltet]
- PDF_open_jpeg — Öffnet JPEG-Bild [veraltet]
- PDF_open_memory_image — Öffnet mit PHP-Bildfunktionen erzeugtes Bild [nicht unterstützt]
- PDF_open_pdi_page — Bereitet Seite vor
- PDF_open_pdi — Öffnet PDF-Dokument [veraltet]
- PDF_open_tiff — Öffnet TIFF-Bild [veraltet]
- PDF_pcos_get_number — Ermittelt Wert eines pCOS-Pfades vom Typ Zahl oder Boolean
- PDF_pcos_get_stream — Ermittelt Inhalt eines pCOS-Pfades vom Typ stream, fstream oder string
- PDF_pcos_get_string — Ermittelt Wert eines pCOS-Pfades vom Typ Name, String oder Boolean
- PDF_place_image — Platziert Bild [veraltet]
- PDF_place_pdi_page — Platziert PDF-Seite [veraltet]
- PDF_process_pdi — Verarbeitet importiertes PDF-Dokument
- PDF_rect — Zeichnet Rechteck
- PDF_restore — Stellt Grafikzustand wieder her
- PDF_resume_page — Nimmt Seitenausgabe wieder auf
- PDF_rotate — Dreht Koordinatensystem
- PDF_save — Speichert aktuellen Grafikzustand
- PDF_scale — Skaliert Koordinatensystem
- PDF_set_border_color — Setzt Randfarbe von Anmerkungen [veraltet]
- PDF_set_border_dash — Setzt Strichmuster für Rand von Anmerkungen [veraltet]
- PDF_set_border_style — Setzt Randstil von Anmerkungen [veraltet]
- PDF_set_char_spacing — Bestimmt den Zeichenabstand [veraltet]
- PDF_set_duration — Setzt Anzeigedauer von Seiten [veraltet]
- PDF_set_gstate — Aktiviert Grafikzustandsobjekt
- PDF_set_horiz_scaling — Setzt horizontalen Textabstand [veraltet]
- PDF_set_info_author — Füllt Dokumentinfofeld für Verfasser [veraltet]
- PDF_set_info_creator — Füllt Dokumentinfofeld für Anwendung [veraltet]
- PDF_set_info_keywords — Füllt Dokumentinfofeld für Stichwörter [veraltet]
- PDF_set_info_subject — Füllt Dokumentinfofeld für Thema [veraltet]
- PDF_set_info_title — Füllt Dokumentinfofeld für Titel [veraltet]
- PDF_set_info — Füllt Dokumentinfofeld
- PDF_set_layer_dependency — Definiert Beziehungen zwischen Ebenen
- PDF_set_leading — Bestimmt Zeilenabstand [veraltet]
- PDF_set_parameter — Setzt PDFlib-Parameter vom Typ String
- PDF_set_text_matrix — Setzt Textmatrix [veraltet]
- PDF_set_text_pos — Setzt aktuelle Textposition
- PDF_set_text_rendering — Bestimmt Darstellungsmodus für Text [veraltet]
- PDF_set_text_rise — Bestimmt vertikalen Textversatz [veraltet]
- PDF_set_value — Setzt numerischen PDFlib-Parameter
- PDF_set_word_spacing — Setzt Wortabstand [veraltet]
- PDF_setcolor — Setzt Zeichen- und Füllfarbe
- PDF_setdash — Setzt einfaches Strichmuster
- PDF_setdashpattern — Setzt komplexes Strichmuster
- PDF_setflat — Setzt Flatness-Parameter
- PDF_setfont — Setzt aktuelle Schrift
- PDF_setgray_fill — Setzt Füllfarbe auf Grauwert [veraltet]
- PDF_setgray_stroke — Setzt Zeichenfarbe auf Grauwert [veraltet]
- PDF_setgray — Setzt Farbe auf Grauwert [veraltet]
- PDF_setlinecap — Setzt linecap-Parameter
- PDF_setlinejoin — Setzt linejoin-Parameter
- PDF_setlinewidth — Setzt aktuelle Strichstärke
- PDF_setmatrix — Setzt aktuelle Transformationsmatrix
- PDF_setmiterlimit — Setzt miterlimit-Parameter
- PDF_setpolydash — Setzt komplexes Strichmuster [veraltet]
- PDF_setrgbcolor_fill — Setzt Füllfarbe in RGB [veraltet]
- PDF_setrgbcolor_stroke — Setzt Zeichenfarbe in RGB [veraltet]
- PDF_setrgbcolor — Setzt Füll- und Zeichenfarbe in RGB [veraltet]
- PDF_shading_pattern — Definiert Farbverlaufsmuster
- PDF_shading — Definiert Farbverlauf
- PDF_shfill — Füllt Bereich mit Farbverlauf
- PDF_show_boxed — Gibt Text in eine Box aus [veraltet]
- PDF_show_xy — Gibt Text an festgelegter Position aus
- PDF_show — Gibt Text an aktueller Textposition aus
- PDF_skew — Schert Koordinatensystem
- PDF_stringwidth — Return width of text
- PDF_stroke — Zeichnet Pfad
- PDF_suspend_page — Unterbricht Ausgabe der Seite
- PDF_translate — Verschiebt Ursprung des Koordinatensystems
- PDF_utf16_to_utf8 — Konvertiert String von UTF-16 nach UTF-8
- PDF_utf32_to_utf16 — Konvertiert String von UTF-32 nach UTF-16
- PDF_utf8_to_utf16 — Konvertiert String von UTF-8 nach UTF-16