ClibPDF Funktionen [veraltet]
Einführung
Da es für ClibPDF keinen Support mehr gibt, wird dringend empfohlen, eine Alternative wie Haru, PDFlib oder eine der verfügbaren PHP-Alternativen zu verwenden.
Mit der ClibPDF können Sie PDF-Dokumente mit PHP erstellen. Funktionalität und API der ClibPDF sind der PDFlib ähnlich. Diese Dokumentation sollten Sie zusammen mit dem ClibPDF-Handbuch lesen, weil letzteres diese Bibliothek viel ausführlicher erklärt.
Die Namen vieler Funktionen in der ClibPDF, im PHP-Modul und in der PDFlib sind gleich. Außer cpdf_open() nehmen alle Funktionen die Bezeichnung des Dokuments als ihren ersten Parameter.
Diese Bezeichnung wird gegenwärtig nicht intern verwendet, weil ClibPDF die gleichzeitige Erzeugung mehrerer PDF-Dokumente nicht unterstützt. Da das Ergebnis nicht vorhersehbar ist, sollten Sie es am besten nicht einmal testen. Die Folgen, die das in einer multi-threaded Umgebung hätte, kann ich nicht abschätzen. Laut ClibPDF-Autor wird sich das in einer der nächsten Versionen ändern (als dieses geschrieben wurde, war Version 1.10 aktuell). Verwenden Sie das pdflib-Modul, wenn Sie diese Funktionalität benötigen.
Eine nette Eigenschaft der ClibPDF (und der PDFlib) ist die Möglichkeit, das PDF-Dokument vollständig im Speicher zu erzeugen, ohne temporäre Dateien zu verwenden. Sie bietet auch die Möglichkeit, Koordinaten in einer vordefinierten Längeneinheit zu übergeben. Dies ist eine praktische Fähigkeit, die bei Verwendung der PDFlib aber auch mit pdf_translate() simuliert werden kann.
Eine weitere nette Eigenschaft von ClibPDF ist die Tatsache, dass jede Seite jederzeit geändert werden kann, selbst wenn schon eine neue Seite geöffnet wurde. Die Funktion cpdf_set_current_page() erlaubt es, die aktuelle Seite zu verlassen und mit den Änderungen einer anderen Seite fortzufahren.
Die meisten Funktionen sind ziemlich einfach zu benutzen. Der schwierigste Teil ist wahrscheinlich die Erzeugung eines sehr einfachen PDF-Dokuments überhaupt. Das folgende Beispiel sollte für Sie eine gute Starthilfe sein. Es erzeugt ein Dokument mit einer Seite. Die Seite enthält den Umriss des Textes "Times-Roman" in 30-Punkt-Schrift. Der Text ist unterstrichen.
Hinweis: Diese Erweiterung wurde ins » PECL Repositorium verschoben und ist nicht mehr Teil von PHP ab PHP 5.1.0.
Hinweis: Falls Sie an alternativen freien PDF-Generatoren interessiert sind, die keine externen PDF-Bibliotheken benutzen, siehe die diesbezügliche FAQ.
Anforderungen
Um die ClibPDF-Funktionen benutzen zu können, müssen Sie das ClibPDF-Paket installieren. Es ist zum Herunterladen erhältlich von » FastIO, aber für dessen kommerzielle Verwendung ist es erforderlich, dass Sie eine Lizenz erwerben. Für PHP wird cpdflib >= 2 benötigt. Die Entwicklung der ClibPDF-Bibliothek wurde eingestellt und die FastIO-Website ist höchstwahrscheinlich nicht erreichbar.
Installation
Damit diese Funktionen zur Verfügung stehen, müssen Sie PHP mit --with-cpdflib[=DIR] übersetzen. DIR ist das cpdflib-Installationsverzeichnis, standardmäßig /usr. Zusätzlich können Sie die jpeg- und tiff-Bibliotheken für die Verwendung durch ClibPDF angeben. Das erreichen Sie, indem Sie an ihre Konfigurationszeile die Optionen --with-jpeg-dir[=DIR] --with-tiff-dir[=DIR] anfügen.
Laufzeit Konfiguration
Diese Erweiterung definiert keine Konfigurationseinstellungen in der php.ini.
Vordefinierte Konstanten
Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.
Beispiele
Example#1 Ein einfaches ClibPDF-Beispiel
<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842, 1.0);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Seite 1");
cpdf_begin_text($cpdf);
cpdf_set_font($cpdf, "Times-Roman", 30, "WinAnsiEncoding");
cpdf_set_text_rendering($cpdf, 1);
cpdf_text($cpdf, "Times Roman outlined", 50, 50);
cpdf_end_text($cpdf);
cpdf_moveto($cpdf, 50, 50);
cpdf_lineto($cpdf, 740, 330);
cpdf_stroke($cpdf);
cpdf_finalize_page($cpdf, 1);
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>
Die pdflib-Distribution enthält ein komplexeres Beispiel, das eine Reihe von Seiten mit einer Analoguhr erzeugt. Hier ist dieses Beispiel, das unter Verwendung der ClibPDF-Erweiterung in PHP konvertiert wurde:
Example#2 pdfclock-Beispiel der pdflib 2.0 Distribution
<?php
$radius = 200;
$margin = 20;
$pagecount = 40;
$pdf = cpdf_open(0);
cpdf_set_creator($pdf, "pdf_clock.php");
cpdf_set_title($pdf, "Analog Clock");
while ($pagecount-- > 0) {
cpdf_page_init($pdf, $pagecount+1, 0, 2 * ($radius + $margin), 2 * ($radius + $margin), 1.0);
cpdf_set_page_animation($pdf, 4, 0.5, 0, 0, 0); /* wipe */
cpdf_translate($pdf, $radius + $margin, $radius + $margin);
cpdf_save($pdf);
cpdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);
/* minute strokes */
cpdf_setlinewidth($pdf, 2.0);
for ($alpha = 0; $alpha < 360; $alpha += 6) {
cpdf_rotate($pdf, 6.0);
cpdf_moveto($pdf, $radius, 0.0);
cpdf_lineto($pdf, $radius-$margin/3, 0.0);
cpdf_stroke($pdf);
}
cpdf_restore($pdf);
cpdf_save($pdf);
/* 5 minute strokes */
cpdf_setlinewidth($pdf, 3.0);
for ($alpha = 0; $alpha < 360; $alpha += 30) {
cpdf_rotate($pdf, 30.0);
cpdf_moveto($pdf, $radius, 0.0);
cpdf_lineto($pdf, $radius-$margin, 0.0);
cpdf_stroke($pdf);
}
$ltime = getdate();
/* draw hour hand */
cpdf_save($pdf);
cpdf_rotate($pdf, -(($ltime['minutes']/60.0) + $ltime['hours'] - 3.0) * 30.0);
cpdf_moveto($pdf, -$radius/10, -$radius/20);
cpdf_lineto($pdf, $radius/2, 0.0);
cpdf_lineto($pdf, -$radius/10, $radius/20);
cpdf_closepath($pdf);
cpdf_fill($pdf);
cpdf_restore($pdf);
/* draw minute hand */
cpdf_save($pdf);
cpdf_rotate($pdf, -(($ltime['seconds']/60.0) + $ltime['minutes'] - 15.0) * 6.0);
cpdf_moveto($pdf, -$radius/10, -$radius/20);
cpdf_lineto($pdf, $radius * 0.8, 0.0);
cpdf_lineto($pdf, -$radius/10, $radius/20);
cpdf_closepath($pdf);
cpdf_fill($pdf);
cpdf_restore($pdf);
/* draw second hand */
cpdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);
cpdf_setlinewidth($pdf, 2);
cpdf_save($pdf);
cpdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
cpdf_moveto($pdf, -$radius/5, 0.0);
cpdf_lineto($pdf, $radius, 0.0);
cpdf_stroke($pdf);
cpdf_restore($pdf);
/* draw little circle at center */
cpdf_circle($pdf, 0, 0, $radius/30);
cpdf_fill($pdf);
cpdf_restore($pdf);
cpdf_finalize_page($pdf, $pagecount+1);
}
cpdf_finalize($pdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($pdf);
cpdf_close($pdf);
?>
Siehe auch
Siehe auch die Dokumentation der PDFlib-Erweiterung.
Inhaltsverzeichnis
- cpdf_add_annotation — Fügt eine Anmerkung ein
- cpdf_add_outline — Fügt ein Lesezeichen für die aktuelle Seite hinzu
- cpdf_arc — Zeichnet einen Kreisbogen
- cpdf_begin_text — Beginnt einen Textabschnitt
- cpdf_circle — Zeichnet einen Kreis
- cpdf_clip — Beschränkt alle Zeichnungen auf den aktuellen Pfad
- cpdf_close — Schließt ein PDF-Dokument
- cpdf_closepath_fill_stroke — Schließt, füllt und zeichnet den aktuellen Pfad
- cpdf_closepath_stroke — Schließt einen Pfad und zeichnet eine Linie entlang des Pfades
- cpdf_closepath — Schließt den aktuellen Pfad
- cpdf_continue_text — Gibt den Text in der nächsten Zeile aus
- cpdf_curveto — Zeichnet eine Kurve
- cpdf_end_text — Beendet einen Textabschnitt
- cpdf_fill_stroke — Füllt und zeichnet den aktuellen Pfad
- cpdf_fill — Füllt den aktuellen Pfad
- cpdf_finalize_page — Beendet eine Seite
- cpdf_finalize — Beendet ein Dokument
- cpdf_global_set_document_limits — Setzt Beschränkungen für alle PDF-Dokumente
- cpdf_import_jpeg — Öffnet ein JPEG-Bild
- cpdf_lineto — Zeichnet eine Linie
- cpdf_moveto — Legt die aktuelle Position fest
- cpdf_newpath — Beginnt einen neuen Pfad
- cpdf_open — Öffnet ein neues PDF-Dokument
- cpdf_output_buffer — Gibt das PDF-Dokument aus dem Zwischenspeicher aus
- cpdf_page_init — Beginnt eine neue Seite
- cpdf_place_inline_image — Platziert ein Bild auf der Seite
- cpdf_rect — Zeichnet ein Rechteck
- cpdf_restore — Stellt die zuvor gesicherte Umgebung wieder her
- cpdf_rlineto — Zeichnet eine Linie (relativ)
- cpdf_rmoveto — Legt die relative aktuelle Position fest
- cpdf_rotate_text — Legt den Drehwinkel für Text fest
- cpdf_rotate — Legt den Drehwinkel fest
- cpdf_save_to_file — Schreibt ein PDF-Dokument in eine Datei
- cpdf_save — Sichert die aktuelle Umgebung
- cpdf_scale — Legt die Skalierung fest
- cpdf_set_action_url — Setzt einen Hyperlink
- cpdf_set_char_spacing — Legt den Zeichenabstand fest
- cpdf_set_creator — Setzt das Urheberfeld des PDF-Dokuments
- cpdf_set_current_page — Setzt die aktuelle Seite
- cpdf_set_font_directories — Legt die Verzeichnisse fest, die bei Verwendung externer Schriftarten durchsucht werden
- cpdf_set_font_map_file — Legt bei Verwendung externer Schriftarten die Datei mit den Schriftart-Dateiname-Zuordnungen fest
- cpdf_set_font — Wählt die aktuelle Schriftart und -größe
- cpdf_set_horiz_scaling — Setzt die horizontale Textskalierung
- cpdf_set_keywords — Setzt das Schlüsselwortfeld des PDF-Dokuments
- cpdf_set_leading — Setzt den Zeilenabstand
- cpdf_set_page_animation — Legt den Übergang zwischen den Seiten fest
- cpdf_set_subject — Setzt das Themenfeld des PDF-Dokuments
- cpdf_set_text_matrix — Legt die Text-Matrix fest
- cpdf_set_text_pos — Legt die Textposition fest
- cpdf_set_text_rendering — Legt fest, wie Text wiedergegeben wird
- cpdf_set_text_rise — Legt die vertikale Textverschiebung fest
- cpdf_set_title — Setzt das Titelfeld PDF-Dokuments
- cpdf_set_viewer_preferences — Legt fest, wie das Dokument im Betrachter dargestellt wird
- cpdf_set_word_spacing — Legt den Abstand zwischen den Wörtern fest
- cpdf_setdash — Setzt eine gestrichelte Linie
- cpdf_setflat — Legt die Flachheit fest
- cpdf_setgray_fill — Setzt die Füllfarbe auf einen Grauwert
- cpdf_setgray_stroke — Setzt die Zeichenfarbe auf einen Grauwert
- cpdf_setgray — Setzt Zeichen- und Füllfarbe auf einen Grauwert
- cpdf_setlinecap — Legt den Typ der Linienenden fest
- cpdf_setlinejoin — Legt den Typ der Linienverbindungen fest
- cpdf_setlinewidth — Legt die Linienbreite fest
- cpdf_setmiterlimit — Legt die Gehrungsbegrenzung fest
- cpdf_setrgbcolor_fill — Setzt die Füllfarbe auf einen RGB-Farbwert
- cpdf_setrgbcolor_stroke — Setzt die Zeichenfarbe auf einen RGB-Farbwert
- cpdf_setrgbcolor — Setzt Zeichen- und Füllfarbe auf einen RGB-Farbwert
- cpdf_show_xy — Gibt Text an der angegebenen Position aus
- cpdf_show — Gibt Text an der aktuellen Position aus
- cpdf_stringwidth — Liefert die Breite einer Zeichenkette in der aktuellen Schriftart
- cpdf_stroke — Zeichnet eine Linie entlang des aktuellen Pfades
- cpdf_text — Gibt den Text mit Parametern aus
- cpdf_translate — Legt den Ursprung des Koordinatensystems fest