ClibPDF Függvények
Bevezetés
A ClibPDF segítségével PDF dokumentumokat lehet létrehozni PHP-vel. A ClibPDF funkcionalitásában és az API tekintetében is hasonló a PDFlib-hez.
Ezt a dokumentációt ajánlatos a ClibPDF kézikönyvvel együtt olvasni mivel az a függvényeket nagyobb részletességgel magyarázza.
Sok függvény az alap ClibPDF-ben, a PHP modulban, valamint a PDFlib-ben a ugyanazzal a névvel rendelkezik. Az összes függvény, kivéve a cpdf_open() első paramétereként a dokumentum kezelőjét (handler) kéri. Jelenleg ez a kezelőt a PHP belsőleg nem használja, mivel a ClibPDF nem támogatja több PDF dokumentum egyidejű létrehozását. Ezzel nagyon ne is próbálkozz, mert az eredményt nem lehet előre megjósolni. Nem tudható, hogy a többszálas környezetben ez milyen következnényekkel járna. A ClibPDF szerzője szerint ez változni fog a következő változatnál (az írás idején a jelenlegi verzió az 1.10). Ha mégis szükséged van erre a lehetőségre, használd a PDFlib modult.
A PDFlib-el szemben van egy nagy előnye a ClibPDF-nek. PDF doumentumokat tud létrehozni a memóriában ideiglenes fájlok használata nélkül. Lehetőséget ad továbbá arra, hogy koordinátákat adj át egy előre definiált mértékegységben. Ez egy nagyon jó lehetőség, de szimulálható a PDFlib pdf_translate() függvényével.
A legtöbb függvény egyszerűen használható. A legnehezebb rész valószínűleg egy nagyon egyszerű PDF létrehozása. A következő példa segíthet az elindulásban. Ez egy egy oldalas dokumentumot készít. Az oldal tartalmazza a "Times-Roman" szöveget egy 30 pont méretű körvonalas betűtípusssal. A szöveg aláhúzott.
Note: Ez a kiterjesztés átkerült a » PECL tárba és már nem terjesztik a PHP-vel együtt ettől a verziótól kezdve: PHP 5.1.0.
Note: Ha olyan PDF előállítási lehetőségek érdekelnének, amelyhez nincs szükség külső, PHP-hez fordítandó függvénykönytárakra, nézd meg ezt az ide vonatkozó GYIK bejegyzést!
Követelmények
Ahhoz, hogy a ClibPDF függvényeit használatba vehesd, telepítened kell a ClibPDF csomagot. Ez elérhető a » FastIO-nál, de ez üzleti célokra csak megvásárolt licensszel használható. A PHP megköveteli, hogy minimum 2-es változatú cpdflib-et használj.
Telepítés
To get these functions to work, you have to compile PHP with --with-cpdflib[=DIR]. DIR is the cpdflib install directory, defaults to /usr. In addition you can specify the jpeg library and the tiff library for ClibPDF to use. To do so add to your configure line the options --with-jpeg-dir[=DIR] --with-tiff-dir[=DIR].
Futásidejű beállítások
Ez a kiterjesztés semmilyen konfigurációs beállításokat nem definiál a php.ini állományban.
Előre definiált állandók
Az itt listázott állandókat ez a kiterjesztés definiálja, és csak akkor elérhetőek, ha az adott kiterjesztés be van fordítva a PHP-be, vagy dinamikusan betöltött.
Példák
Example#1 Egyszerű ClibPDF példa
<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");
cpdf_set_font($cpdf, "Times-Roman", 30, "WinAnsiEncoding");
cpdf_set_text_rendering($cpdf, 1);
cpdf_text($cpdf, "Times Roman outlined", 50, 50);
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);
?>
A PDFlib csomag egy összetettebb példát tartalmaz, amely egy oldalsorozatot állít elő egy analóg órával. Ez itt a ClibPDF kiterjesztést használó PHP-be konvertált változat:
Example#2 pdfclock példa a PDFlib 2.0 csomagból
<?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);
/* perceket jelölő rovátkák rajzolása */
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);
/* minden ötödik percet jelölő rovátkák */
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();
/* óramutató rajzolása */
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);
/* percmutató rajzolása */
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);
/* másodpercmutató rajzolása */
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);
/* egy kis köröcske középre, hogy csinosak legyünk */
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);
?>
Lásd még
További informácikért érdemes meglátogatni a PDFlib kiterjesztés dokimentációját.
Table of Contents
- cpdf_add_annotation — Megjegyzés hozzáfűzése
- cpdf_add_outline — Könyvjelzőt helyez el az aktuális oldalon
- cpdf_arc — Ívet rajzol
- cpdf_begin_text — Szöveg szekciót kezd el
- cpdf_circle — Kört rajzol
- cpdf_clip — Kivágja az aktuális alakzatot
- cpdf_close — Bezárja a pdf dokumentumot
- cpdf_closepath_fill_stroke — Bezárja, kitölti és körvonalazza az aktuális alakzatot
- cpdf_closepath_stroke — Bezárja az alakzatot és körvonalat rajzol az alakzat mentén
- cpdf_closepath — Befejez egy alakzatot
- cpdf_continue_text — Szöveget helyez a következő sorba
- cpdf_curveto — Görbét rajzol
- cpdf_end_text — Befejezi a szöveg szekciót
- cpdf_fill_stroke — Kitölti és körvonalazza az aktuális alakzatot
- cpdf_fill — Kitölti az aktuális alakzatot
- cpdf_finalize_page — Befejezi az oldalt
- cpdf_finalize — Befejezi a dokumentumot
- cpdf_global_set_document_limits — A pdf dokumentumra vonatkozó korlátozások beállítására szolgál
- cpdf_import_jpeg — Megnyit egy JPEG képet
- cpdf_lineto — Egyenest rajzol
- cpdf_moveto — Beállítja az aktuális pontot
- cpdf_newpath — Új alakzatot kezd
- cpdf_open — Megnyit egy új pdf dokumentumot
- cpdf_output_buffer — A memóriapufferből kiiratja a pdf dokumentumot
- cpdf_page_init — Új oldalt kezd
- cpdf_place_inline_image — Képet helyez el az oldalon
- cpdf_rect — Téglalapot rajzol
- cpdf_restore — Visszaállítja a korábban elmentett környezetet
- cpdf_rlineto — Egyenest rajzol
- cpdf_rmoveto — Beállítja az aktuális pontot
- cpdf_rotate_text — Sets text rotation angle
- cpdf_rotate — Beállítja a forgatást
- cpdf_save_to_file — A pdf dokumentumot fájlba írja
- cpdf_save — Elmenti az aktuális környezetet
- cpdf_scale — Beállítja a méretezést
- cpdf_set_action_url — Sets hyperlink
- cpdf_set_char_spacing — Beállítja a betűtávolságot
- cpdf_set_creator — A pdf dokumentumban a létrehozó(creator) mezőt állítja
- cpdf_set_current_page — Beállítja az aktuális oldalt
- cpdf_set_font_directories — Sets directories to search when using external fonts
- cpdf_set_font_map_file — Sets fontname to filename translation map when using external fonts
- cpdf_set_font — Kiválaszja az aktuális betűtípust és méretet
- cpdf_set_horiz_scaling — Beállítja a szöveg vízszintes méretezését
- cpdf_set_keywords — Beállítja a pdf dokumentum kulcsszavak mezőjét
- cpdf_set_leading — Beállítja a szöveg sortávolságát
- cpdf_set_page_animation — Beállítja az oldalak közti átmeneti időtartamot
- cpdf_set_subject — Beállítja a pdf dokumentum tárgy mezőjét
- cpdf_set_text_matrix — Beállítja a szövegmátrixot
- cpdf_set_text_pos — Beállítja a szövegpozíciót
- cpdf_set_text_rendering — Meghatározza hogyan legyen a szöveg kirajzolva
- cpdf_set_text_rise — Beállítja a szöveg emelkedését
- cpdf_set_title — A pdf dokumentumban a cím(title) mezőt állítja
- cpdf_set_viewer_preferences — How to show the document in the viewer
- cpdf_set_word_spacing — Beállítja a szótávolságot
- cpdf_setdash — Beállítja a szaggatott vonalmintát
- cpdf_setflat — Beállítja a simaságot
- cpdf_setgray_fill — Szürke értékre állítja a kitöltő színt
- cpdf_setgray_stroke — Szürke értékre állítja a körvonalrajzoló színt
- cpdf_setgray — Szürke értékre állítja a rajzoló és kitöltő színt
- cpdf_setlinecap — Beállítja a vonalcsúcs paramétert
- cpdf_setlinejoin — Beállítja a vonalak kapcsolódási módját
- cpdf_setlinewidth — Beállítja a vonalvastagságot
- cpdf_setmiterlimit — Beállítja a hegyesszög határát
- cpdf_setrgbcolor_fill — Rgb színértékre állítja be a kitöltő színt
- cpdf_setrgbcolor_stroke — Rgb színértékre állítja be a körvonalrajzoló színt
- cpdf_setrgbcolor — Rgb színértékre állítja be a körvonalrajzoló és kitöltő színt
- cpdf_show_xy — Szöveget helyez adott pozícióba
- cpdf_show — Szöveget helyez az aktuális pozícióba
- cpdf_stringwidth — Visszaadja a szöveg szélességét az aktuális font alapján
- cpdf_stroke — Körvonalat rajzol egy alakzat mentén
- cpdf_text — Szöveget helyez el paraméterekkel
- cpdf_translate — Beállítja a koordinátarendszer kezdőpontját