![]() |
|
||||||||||||||||
![]() |
||||||||||||||||
Pràctica |
![]() |
Exercicis
|
||||||||||||||
Creació de documents pdf | ||||||||||||||||
En aquesta pràctica veurem les possibilitats de crear fitxers PDF de manera dinàmica. Es tracta de veure mínimament alguna de les coses que es poden fer i no pas d'aprofundir-hi. |
||||||||||||||||
Opcions | ||||||||||||||||
Per crear documents d'aquest tipus amb el PHP podem trobar diferents possibilitats:
Les dues primeres opcions són parcialment comercials i ofereixen un xic més de rapidesa en la generació dels pdf. D'altra banda, cal que estiguin instal·lades en el servidor amb què treballem, cosa que no podrem controlar en cas que es tracti d'un servidor comercial. La nostra pràctica se centrarà en la darrera de les opcions (Fpdf) pel seu cost, documentació i potència acceptable. D'altra banda, tot i que la pàgina web és en francès o anglès, hi ha la traducció al castellà del manual. Podeu veure les possibilitats d'aquesta classe anant als
tutorials
de la seva pàgina web. Igualment, podeu veure les scripts
(codis de barres, filigranes, diagrames, etc.) que han creat els seus
usuaris. |
||||||||||||||||
Classes i objectes | ||||||||||||||||
![]() |
Ja veieu que aquí, i ja abans, ha sortit el concepte de classe. Segurament que esteu familiaritzats amb aquest concepte que el PHP comparteix amb molts d'altres llenguatges de programació orientats a objectes. Aprofundir gaire en aquest aspecte va més enllà dels objectius d'aquest curs, però sí que podem dir també que el PHP proporciona unes funcions destinades al treball amb classes i objectes. Igualment, hi podem afegir que un dels aspectes que s'ha millorat en el PHP 5 (darrera versió fins al moment) és precisament la millora de les capacitats de treball amb objectes. |
|||||||||||||||
![]() |
En cas que no hagueu treballat abans amb classes i objectes,
podeu veure unes notes
introductòries ![]() |
|||||||||||||||
Un exemple de classe seria la que ens ocupa: fpdf crea un document pdf (un objecte) a partir de les dades que li donem. Remarqueu, a més, que podem estendre les funcionalitats de qualsevol classe, és a dir, la podem dotar de noves característiques que s'acumulen a les que portava de base. També és interessant de saber que milers de programadors de tot el món creen les seves classes que posen a disposició de la comunitat de manera desinteressada. D'aquesta manera, és probable que trobem classes que fan alguna cosa en concret que ens interessi. La classe amb què treballarem en aquesta pràctica seria un bon exemple del que comentem. Un dels webs on podeu trobar una gran quantitat de classes interessants, amb actualitzacions diàries i classificades temàticament és http://www.phpclasses.org. |
||||||||||||||||
Fpdf | ||||||||||||||||
Instal·lació | ||||||||||||||||
Trobarem els fitxers anant al web http://www.fpdf.org o bé en el servei cd-web de la XTEC. Si no esteu connectats a internet, també podeu trobar directament els fitxers corresponents a la versió 1.52, amb la qual treballarem, a /fitxers/m7/fpdf152/fpdf152.zip o bé en el paquet de materials de formació (cd 'Eines'). Per instal·lar-los, simplement cal que creem un directori anomenat fpdf al directori arrel de les pràctiques (\www\prac_d116\fpdf, si heu seguit la instla·lació recomanda). Així, quedarà: C:\Archivos de programa\EasyPHP1-7\www\prac_d116\fpdf. Després hi descomprimim el fitxer que hem baixat. Ara, si us trobeu en l'ordinador en què heu instal·lat el servidor i està en funcionament, podeu veure els tutorials entrant l'adreça http://localhost/prac_d116/fpdf/tutoriel/index.htm |
||||||||||||||||
![]() |
Donem per suposat que teniu instal·lat en el vostre ordinador l'Acrobat Reader. Sense aquest programa, no podreu llegir, òbviament, els fitxers pdf generats. En cas que no sigui així, recordeu que des de http://www.acrobat.com el podeu baixar. | |||||||||||||||
|
||||||||||||||||
Un llistat en pdf | ||||||||||||||||
![]() |
Un cop tenim instal·lats els elements necessaris, crearem un llistat en pdf a partir d'un document de text (alumnat.txt) que hem exportat del WinSec. Aquest document conté les dades de l'alumnat d'un centre, en format de text, amb els camps separats per una coma (,) i amb els camps de text iniciats i acabats amb cometes. Podeu veure més detalls sobre la consulta clicant aquí. Mitjançant el codi que proposem, crearem una taula en què s'alternaran els colors de fons i que contindrà les primeres dades de cada alumne/a del fitxer de text (DNI, cognom1, cognom2, nom, pla). A més, hi afegirem una primera columna amb un comptador. El resultat final serà semblant al de la imatge següent: Figura 7.3.1: Llistat d'alumnes |
|||||||||||||||
Crear el llistat | ||||||||||||||||
Primerament, cal que aconseguim el fitxer alumnat en el format que hem especificat. Podeu fer la vostra consulta amb el Winsec, tal com s'ha explicat més amunt, o podeu baixar-vos un fitxer alumnat.txt que hem preparat. |
||||||||||||||||
![]() |
Recordeu que amb algun navegador cal que cliqueu sobre l'enllaç amb el botó dret del ratolí, triant l'opció Guardar destino como... per baixar els fitxers. | |||||||||||||||
Tingueu present que el fitxer alumnat.txt s'ha de trobar al mateix directori en què hi hagi l'script que ara explicarem. Copieu el codi que teniu a continuació en l'editor i deseu-lo amb el nom de m7p3.php |
||||||||||||||||
<?php /*--------------------------------------------------------------- * Mòdul: 7 Pràctica: 3 Fitxer: m7p3.php * Autor: D116 Data: * Descripció: Generació dinàmica d'un document pdf * Pre condi.: Cal tenir instal·lada la bib. 'fpdf' * Post cond.: ----------------------------------------------------------------*/ // Primerament creem el 'define' FPDF_FONTPATH amb el directori
//Càrrega de dades } // Fi funció CarregaDades // Creació de la taula // Capçalera // Cos del llistat // Escriptura de les línies (dades) } // Fi d'extensió de classe //////////////////////////////////////////////////////// |
||||||||||||||||
Llistat 7.3.1. Creació de fitxer pdf | ||||||||||||||||
Aquest codi està basat en un dels exemples del tutorial i conté una extensió de la classe fpdf, és a dir, dotem de més possibilitats la classe original. El codi té nombrosos comentaris que ajuden a entendre'l millor. El procés que seguim és:
|
||||||||||||||||
![]() |
Si a aquesta darrera funció li passéssim
com a paràmetre un nom de fitxer, el resultat es desaria al servidor
en un fitxer amb aquest nom i no es mostraria en el navegador. Ex.: $pdf->Output("llista.pdf"). |
|||||||||||||||
![]() |
||||||||||||||||
|
||||||||||||||||