Forum und email

ClibPDF funkcie

Úvod

ClibPDF vám dovoľuje vytvárať PDF dokumenty s PHP. Funkčnosť ClibPDF a API sú podobné ako PDFlib. Táto dokumentáciu by ste mali čítať súčasne s ClibPDF manuálom, nakoľko vysvetľuje knižnicu vo väčšom detaile.

Mnoho funkcií v pôvodnom ClibPDF a PHP module, rovnako ako PDFlib, má rovnaké názvy. Všetky funkcie okrem cpdf_open() majú ako svoj prvý parameter handle pre dokument.

Momentálne sa handle interne nepoužíva, pretože ClibPDF nepodporuje vytváranie niekoľkých PDF dokumentov naráz. Vlastne by ste to namali ani skúšať, výsledky sa nedajú predvídať. Nemožno prehliadnúť aké sú následky v prepletenom prostredí. Podľa autora ClibPDF dôjde k zmene v jednom z ďalších vydaní (v dobe písania tohto dokumentu je aktuálnou verziou 1.10). Ak túto funkčnosť potrebujete, použite pdflib modul..

Peknou vlastnosťou ClibPDF (a PDFlib) je schopnosť vytvárať celý pdf dokument v pamäti bez použitia dočasných súborov. Taktiež poskytuje schopnosť udávať súradnice v preddefinovanej jednotke dĺžky. (Táto vlastnosť sa tiež môže simulovať cez pdf_translate() pri použití PDFlib funkcií.)

Ďalšou skvelou vlastnosťou ClibPDF je fakt, že ak už bola nová strana otvorená, iná strana sa môže hocikedy modifikovať. Funkcia cpdf_set_current_page() umožňuje odložiť aktuálnu stranu a použiť inú na modifikovanie.

Väčšina funkcií sa veľmi jednoducho používa. Najťažšia časť je snáď len vytváranie veľmi jednoduchého PDF dokumentu. Následujúci príklad by vám mal pomôcť so začatkom. Vytvára dokument s jednou stranou. Strana obsahuje text "Times-Roman" v obrysovom 30pt fonte. Text je podčiarknutý.

Požiadavky

Aby ste ClibPDF funkcie mohli používať, musíte nainštalovať balík ClibPDF. Je možné si ho stiahnúť z » FastIO, ale vyžaduje kúpu licencie pre komerčné použitie. PHP vyžaduje, aby ste používali cpdflib >= 2.

Inštalácia

Aby tieto funkcie fungovali, musíte PHP skompilovať s --with-cpdflib[=DIR]. DIR je inštalačný adresár cpdflib, default je /usr. Navyše môžete určiť na používanie jpeg knižnicu a tiff knižnicu pre ClibPDF. Ak tak chcete urobiť, pridajte do konfiguračných riadkov nastavenia --with-jpeg-dir[=DIR] --with-tiff-dir[=DIR].

Runtime Konfigurácia

Toto rozšírenie nemá žiadne konfiguračné direktívy definované v php.ini.

Preddefinované Konštanty

Konštanty uvedené nižšie sú definované týmto rozšírením a budú dostupné iba keď rozšírenie bolo buď kompilované do PHP alebo dynamicky načítané za behu (runtime).

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)

Príklady

Example#1 Jednoduchý ClibPDF príklad

<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842, 1.0);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 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);
?>

pdflib distribúcia obsahuje komplexnejší príklad, ktorý vytvára sériu strán s analógovými hodinami. Tu je príklad skonvertovaný do PHP pomocou rozšírenia ClibPDF:

Example#2 pdfclock príklad z pdflib 2.0 distribúcie

<?php
$radius = 200;
$margin = 20;
$pagecount = 40;

$pdf = cpdf_open(0);
cpdf_set_creator($pdf, "pdf_clock.php3");
cpdf_set_title($pdf, "Analogove Hodiny");
  
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);
  
  /* posun o minutu */
  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);
 
  /* posun o 5 minut */
  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();

  /* nakresli hodinovu rucicku */
  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);

  /* nakresli minutovu rucicku */
  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);

  /* nakresli sekundovu rucicku */
  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);

  /* nakresli maly kruh v strede */
  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);
?>

Tiež pozri

Tiež pozri dokumentáciu PDFlib rozšírenia.

Table of Contents