Funzioni ClibPDF
Introduzione
ClibPDF permette di creare documenti PDF utilizzando PHP. La funzionalità e l' API di ClibPDF sono simili a quelle di PDFlib. Questa documentazione dovrebbe essere letta insieme al manuale di ClibPDF poichè entra maggiormente nel dettaglio della libreria.
Molte funzioni nella ClibPDF nativa e nel modulo PHP , così come nella PDFlib hanno lo stesso nome. Tutte le funzioni ad eccezione di cpdf_open() hanno l'identificatore del documento come loro primo parametro.
Attualmente questo identificatore non è usato internamente dato che ClibPDF non supporta la creazione di svariati documenti PDF contemporaneamente. Attualmente non bisognerebbe provare a farlo, dato che i risultati sono imprevedibili. Non è possibile controllare quali siano le conseguenze in un ambiente multi processo. Secondo l'autore di ClibPDF questo cambierà in una delle prossime release (la versione corrente quando questo è stato scritto è la 1.10). Se si ha bisogno di questa funzionalità utilizzare il modulo pdflib.
Un'interessante caratteristica di ClibPDF (e PDFlib) è l'abilità di creare il documento PDF completamente in memoria senza utilizzare file temporanei. Inoltre fornisce l'abilità di passare le coordinare in un'unità di lunghezza predefinita. (Questa caratteristica puo'essere simulata da pdf_translate() quando si utilizzano le funzioni PDFlib.)
Un'altra interessante caratteristica di ClibPDF è il fatto che ogni pagina può essere modificata in qualsiasi momento anche se è già stata aperta una nuova pagina. La funzione cpdf_set_current_page() permette di lasciare la pagina corrente e modificare un'altra pagina.
La maggioranza delle funzioni sono abbastanza facili da usare. La parte più difficile è probabilmente creare un simplice documento PDF. L'esempio seguente dovrebbe essere utile per cominciare. Crea un documento con una pagina. La pagina contiene il testo "Times-Roman" con un font di 30pt. Il testo è sottolineato.
Nota: Se si è interessati ad alternativi generatori PDF free non utilizzare le librerie PDF esterne, vedere questa FAQ per dettagli.
Requisiti
Per potere utilizzare le funzioni ClibPDF occorre installare il modulo ClibPDF. Questo è disponibile in » FastIO, ma richiede l'acquisto di una licenza per uso commerciale. Il PHP richiede la libreria cpdflib >= 2.
Installazione
Per avere disponibili queste funzionalità occorre compilare il PHP con --with-cpdflib[=DIR]. Dove DIR indica la directory in cui è installato cpdflib, per default /usr. In aggiunta si può specificare le librerie jpeg e tiff da utilizzare. Per fare ciò aggiungere alla linea di configurazione le opzioni --with-jpeg-dir[=DIR] e --with-tiff-dir[=DIR].
Configurazione di Runtime
Questa estensione non definisce alcuna direttiva di configurazione in php.ini
Costanti predefinite
Queste costanti sono definite da questa estensione e sono disponibili solo se l'estensione è stata compilata nel PHP o se è stata caricata dinamicamente a runtime.
Esempi
Example#1 Semplice esempio ClibPDF
<?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, 50); cpdf_end_text($cpdf); 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); ?>
La distribuzione pdflib contiene un esempio più complicato che crea una serie di pagine con un orologio analogico. Di seguito si trova questo esempio convertito in PHP utilizzando l'estensione ClibPDF:
Example#2 esempio pdfclock dalla distribuzione pdflib 2.0
<?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); /* linee dei minuti */ 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); /* linee dei 5 minuti */ 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(); /* disegna la lancetta delle ore */ 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); /* disegna la lancetta dei minuti */ 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); /* disegna la lancetta dei secondi */ 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); /* disegna un piccolo cerchio al centro */ 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); ?>
Vedere anche:
Vedere anche la documentazione del modulo PDFlib.
Indice dei contenuti
- cpdf_add_annotation — Aggiunge un'annotazione
- cpdf_add_outline — Aggiunge un segnalibro per la pagina corrente
- cpdf_arc — Disegna un arco
- cpdf_begin_text — Avvia una sezione di testo
- cpdf_circle — Disegna un cerchio
- cpdf_clip — Taglia dal path corrente
- cpdf_close — Chiude il documento PDF
- cpdf_closepath_fill_stroke — Close, fill and stroke current path
- cpdf_closepath_stroke — Chiude il path e disegna una linea lungo il path
- cpdf_closepath — Chiude la path corrente
- cpdf_continue_text — Scrive del testo nella riga seguente
- cpdf_curveto — Disegna una curva
- cpdf_end_text — Termina la sezione di testo
- cpdf_fill_stroke — Fill and stroke current path
- cpdf_fill — Riempie il path corrente
- cpdf_finalize_page — Chiude la pagina
- cpdf_finalize — Chiude il documento
- cpdf_global_set_document_limits — Sets document limits for any pdf document
- cpdf_import_jpeg — Apre un'immagine JPEG
- cpdf_lineto — Disegna una linea
- cpdf_moveto — Setta il punto corrente
- cpdf_newpath — Inizia un nuovo path
- cpdf_open — Apre un nuovo documento pdf
- cpdf_output_buffer — Scrive il documento pdf nel buffer di memoria
- cpdf_page_init — Inizia una nuova pagina
- cpdf_place_inline_image — Inserisce un'immagine nella pagina
- cpdf_rect — Disegna un rettangolo
- cpdf_restore — Ristabilisce le impostazioni salvate in precedenza
- cpdf_rlineto — Disegna una linea
- cpdf_rmoveto — Setta il punto corrente
- cpdf_rotate_text — Setta l'angolo di rotazione del testo
- cpdf_rotate — Effettua una rotazione
- cpdf_save_to_file — Salva il documento pdf in un file
- cpdf_save — Salva le impostazioni correnti
- cpdf_scale — Applica il coefficiente di scala
- cpdf_set_action_url — Imposta un link
- cpdf_set_char_spacing — Imposta la spaziatura fra caratteri
- cpdf_set_creator — Imposta il campo creatore nel documento pdf
- cpdf_set_current_page — Imposta la pagina corrente
- cpdf_set_font_directories — Imposta le directory in cui cercare quando si utilizzano font esterni
- cpdf_set_font_map_file — Imposta la tabella di associazione tra nome di file e nome di font, quando si usano font esterni
- cpdf_set_font — Seleziona l'aspetto e la dimensione del font corrente
- cpdf_set_horiz_scaling — Imposta il fattore di scala orizzontale del testo
- cpdf_set_keywords — Imposta i campi chiave del documento pdf
- cpdf_set_leading — Imposta la distanza fra righe di testo
- cpdf_set_page_animation — Sets duration between pages
- cpdf_set_subject — Imposta il campo soggetto del documento pdf
- cpdf_set_text_matrix — Imposta la matrice di testo
- cpdf_set_text_pos — Imposta la posizione del testo
- cpdf_set_text_rendering — Determines how text is rendered
- cpdf_set_text_rise — Sets the text rise
- cpdf_set_title — Imposta il campo titolo del documento pdf
- cpdf_set_viewer_preferences — How to show the document in the viewer
- cpdf_set_word_spacing — Imposta la spaziatura fra parole
- cpdf_setdash — Sets dash pattern
- cpdf_setflat — Sets flatness
- cpdf_setgray_fill — Imposta il grigio come colore per il riempimento
- cpdf_setgray_stroke — Sets drawing color to gray value
- cpdf_setgray — Imposta il grigio come colore per il disegno e il riempimento
- cpdf_setlinecap — Sets linecap parameter
- cpdf_setlinejoin — Sets linejoin parameter
- cpdf_setlinewidth — Imposta la larghezza delle linee
- cpdf_setmiterlimit — Sets miter limit
- cpdf_setrgbcolor_fill — Sets filling color to rgb color value
- cpdf_setrgbcolor_stroke — Sets drawing color to rgb color value
- cpdf_setrgbcolor — Imposta il valore del colore rgb come colore per il disegno e il riempimento
- cpdf_show_xy — Output text at position
- cpdf_show — Scrive il testo alla posizione corrente
- cpdf_stringwidth — Restituisce la larghezza del testo nel font corrente
- cpdf_stroke — Disegna una linea lungo il path
- cpdf_text — Scrive il testo con i parametri
- cpdf_translate — Sets origin of coordinate system