X. 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

Príklad 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:

Príklad 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.

Obsah
cpdf_add_annotation -- Pridáva poznámku
cpdf_add_outline -- Pridáva záložku pre aktuálnu stranu
cpdf_arc -- Nakreslí oblúk
cpdf_begin_text -- Začína textovú sekciu
cpdf_circle -- Nakreslí kružnicu
cpdf_clip -- Spája s aktuálnou cestou
cpdf_close -- Zatvára pdf dokument
cpdf_closepath_fill_stroke -- Zatvoriť, naplniť a nakresliť aktuálnu cestu
cpdf_closepath_stroke -- Zatvoriť cestu a nakresliť čiaru pozdĺž cesty
cpdf_closepath -- Zatvoriť cestu
cpdf_continue_text -- Vypísať text na nový riadok
cpdf_curveto -- Nakreslí krivku
cpdf_end_text -- Ukončuje sekciu textu
cpdf_fill_stroke -- Vyplniť a nakresliť aktuálnu cestu
cpdf_fill -- Vyplniť aktuálnu cestu
cpdf_finalize_page -- Ukončuje stranu
cpdf_finalize -- Ukončuje dokument
cpdf_global_set_document_limits -- Nastavuje limity dokumentu pre každý pdf dokument
cpdf_import_jpeg -- Otvára JPEG obrázok
cpdf_lineto -- Nakreslí čiaru
cpdf_moveto -- Nastavuje aktuálny bod
cpdf_newpath -- Začína novú cestu
cpdf_open -- Otvára nový pdf dokument
cpdf_output_buffer -- Posiela výstup pdf dokumentu do buffera pamäte
cpdf_page_init -- Začína novú stranu
cpdf_place_inline_image -- Vkladá na stranu obrázok
cpdf_rect -- Nakreslí obdĺžnik
cpdf_restore -- Obnovuje prv uložené prostredie
cpdf_rlineto -- Nakreslí čiaru
cpdf_rmoveto -- Nastavuje aktuálny bod
cpdf_rotate_text --  Nastavuje rotačný uhol textu
cpdf_rotate -- Nastavuje rotáciu
cpdf_save_to_file -- Zapisuje pdf dokument do súboru
cpdf_save -- Ukladá aktuálne prostredie
cpdf_scale -- Nastavuje škálovanie
cpdf_set_action_url --  Nastavuje hyperlinku
cpdf_set_char_spacing -- Nastavuje odstup medzi znakmi
cpdf_set_creator -- Nastavuje pole tvorcu pdf dokumentu
cpdf_set_current_page -- Nastavuje aktuálnu stranu
cpdf_set_font_directories --  Nastavuje adresáre, v ktorých sa má hľadať pri používaní externých fontov
cpdf_set_font_map_file --  Nastavuje názov fontu na preklad mapy názvu súboru pri používaní externých fontov
cpdf_set_font -- Vyberie aktuálny zobrazenie fontu a veľkosť
cpdf_set_horiz_scaling -- Nastavuje horizontálne škálovanie textu
cpdf_set_keywords -- Nastavuje pole kľúčových slov pdf dokumentu
cpdf_set_leading -- Nastavuje vzdialenosť medzi riadkami textu
cpdf_set_page_animation -- Nastavuje dobu medzi stranami
cpdf_set_subject -- Nastavuje pole predmetu pdf dokumentu
cpdf_set_text_matrix -- Nastavuje maticu textu
cpdf_set_text_pos -- Nastavuje pozíciu textu
cpdf_set_text_rendering -- Určuje ako sa text renderuje
cpdf_set_text_rise -- Nastavuje stúpanie textu
cpdf_set_title -- Nastavuje pole titulku pdf dokumentu
cpdf_set_viewer_preferences --  Ako zobraziť dokument v prehliadači
cpdf_set_word_spacing -- Nastavuje odstup medzi slovami
cpdf_setdash -- Nastavuje čiarkovanú vzorku
cpdf_setflat -- Nastavuje plochosť
cpdf_setgray_fill -- Nastavuje plniacu farbu na hodnotu šedej
cpdf_setgray_stroke -- Nastavuje kresliacu farbu na hodnotu šedej
cpdf_setgray -- Nastavuje kresliacu a plniacu farbu na hodnotu šedej
cpdf_setlinecap -- Nastavuje linecap parameter
cpdf_setlinejoin -- Nastavuje linejoin parameter
cpdf_setlinewidth -- Nastavuje šírku čiary
cpdf_setmiterlimit -- Nastavuje limitu mitra
cpdf_setrgbcolor_fill -- Nastavuje plniacu farbu na hodnotu farby rgb
cpdf_setrgbcolor_stroke -- Nastavuje kresliacu farbu na hodnotu farby rgb
cpdf_setrgbcolor -- Nastavuje kresliacu a plniacu farbu na hodntu farby rgb
cpdf_show_xy -- Vypísať text na pozíciu
cpdf_show -- Vypisíať text na aktuálnu pozíciu
cpdf_stringwidth -- Vracia šírku textu v aktuálnom fonte
cpdf_stroke -- Nakreslí čiaru pozdĺž cesty
cpdf_text -- Vypísať text s parametrami
cpdf_translate -- Nastavuje počiatok súradnicovej sústavy