|
|
 |
|
|
 |
 |
 |
 |
 |
Hits gesamt: 3782565 Hits Heute: 1087 max. Hits (10.07.07): 6964 User Online: 30 Scripts: 2748 |
|
|
 |
 |
 |
 |
 |
 |
|
 |
|
|
 |
|
|
 |
|
|
 |
 |
 |
 |
 |
 Flash MX und PHP, MySQL und XML - Dynamische Webseiten generieren mit Flash, mit CD |
|
|
 |
 |
 |
 |
 |
 |
|
 |
|
 |
 |
 |
 |
 |
Manuals > PHP >
ClibPDF Funktionen |
X. ClibPDF FunktionenEinführung
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.
Anmerkung:
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 deren
kommerzielle Verwendung ist es erforderlich, dass Sie eine Lizenz
erwerben. Für PHP wird cpdflib >= 2 benötigt.
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 KonfigurationDiese 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.
BeispieleBeispiel 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, 750); cpdf_end_text($cpdf); cpdf_moveto($cpdf, 50, 740); cpdf_lineto($cpdf, 330, 740); cpdf_stroke($cpdf); 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:
Beispiel 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.php3"); 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.
|
|
|
 |
 |
 |
 |
 |
 |
|
 |