PHP kézikönyv
Előző |  | Következő

# XIV. 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.

> Megjegyzés: 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.

> Megjegyzés: 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.

`CPDF_PM_NONE` (integer)

`CPDF_PM_OUTLINES` (integer)

`CPDF_PM_THUMBS` (integer)

`CPDF_PM_FULLSCREEN` (integer)

`CPDF_PL_SINGLE` (integer)

`CPDF_PL_1COLUMN` (integer)

`CPDF_PL_2LCOLUMN` (integer)

`CPDF_PL_2RCOLUMN` (integer)

# Példák

Példa 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:

Példa 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.

Előző | Tartalom | Következő
classkit_method_rename | Fel | cpdf_add_annotation