CXIV. 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.

Anmerkung: 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 http://www.pdflib.com/products/pdflib/index.html 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: http://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.

Beispiel 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.

Beispiel 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_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 -- Beginnt Template-Definition
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
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_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_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_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
PDF_get_pdi_value -- Ermittelt numerischen PDI-Dokumentparameter
PDF_get_value -- Ermittelt numerischen Parameter
PDF_info_textflow -- Ermittelt Zustand eines Textflusses
PDF_initgraphics -- Setzt Grafikzustand zurück
PDF_lineto -- Zeichnet Linie
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
PDF_open_tiff -- Öffnet TIFF-Bild [veraltet]
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_utf8_to_utf16 -- Konvertiert String von UTF-8 nach UTF-16