Vous êtes sur la page 1sur 13

Tutorial FPDF

APRENDIENDO A UTILIZAR LAS FUNCIONES BASICAS DE ESTA LIBRERIA

Introduccin
Qu es FPDF?
FPDF es una clase escrita en PHP que permite enerar !ocumentos PDF !irectamente !es!e P"P# es !ecir# sin usar la $i$lioteca PDFlib% La F !e FPDF si ni&ica Free ' ratis ( li$re)* pue!e uste! usarla para cualquier prop+sito ( mo!i&icarla a su usto para satis&acer sus necesi!a!es% FPDF tiene otras ,enta-as* &unciones !e alto ni,el% Esta es una lista !e sus principales caracter.sticas* Elecci+n !e la uni!a! !e me!i!a# &ormato !e p/ ina ( m/r enes 0esti+n !e ca$eceras ( pies !e p/ ina Salto !e p/ ina autom/tico Salto !e l.nea ( -usti&icaci+n !el te1to autom/ticos A!misi+n !e im/ enes '2PE0# PN0 ( 0IF) Colores Enlaces A!misi+n !e &uentes TrueT(pe# T(pe3 ( co!i&icaci+n Compresi+n !e p/ ina A4ora que (a sa$emos un poco !e lo $/sico acerca !e nuestra Li$rer.a con la cual tra$a-aremos a lo lar o !e este peque5o Tutorial# es 4ora !e empe6ar# para que el conteni!o sea $re,e ( lo m/s e1pl.cito posi$le se a5a!ir/n al unas im/ enes con e-emplos# se ui!os !e al unas !escripciones que e1plicaran en que consiste ca!a pro$lema o &unci+n que se utilice%

Tecnolo .a ( Aplicaciones 8e$ 9e,in :i6raim Zara o6a Ben.te6

FPDF es una li$rer.a que si sa$es utili6arla# pue!e lle ar a ser mu( 7til# para al unas personas es !i&.cil# pero para otras es mas &/cil# 4a( que mencionar que FPDF no es la 7nica li$rer.a !isponi$le para po!er crear PDF !es!e P"P# 4a( !i,ersas li$rer.as# pero FPDF es una !e las m/s

utili6a!as# es por tanto lo que la 4ace una !e las m/s 7tiles 4asta la &ec4a%

Cmo Instalar FPDF?


Para po!er Instalar esta li$rer.a lo primero que tenemos que 4acer es ir al Si uiente Enlace ( !escar ar el Arc4i,o Zip# el cual es la 7ltima ,ersi+n !e FPDF 3%<% 4ttp*==>>>%&p!&%or =es=!l%p4p?,@3<A&@6ip Una ,e6 !escar a!o el arc4i,o# proce!emos a reali6ar los si uientes pasos 3%B Descomprimimos el Zip ( ten!remos una carpeta llama!a FPDF% ;%B Arrastramos nuestra carpeta !e FPDF a la carpeta !el pro(ecto que ,a(amos a utili6ar en mi e-emplo# les mostrare como se muestra en el !irectorio !e mi Pro(ecto% Por !e&ecto# la ma(or.a !e los pro(ectos se uar!an en C:/xampp/htdocs

Como se pue!e apreciar# solo es cuesti+n !e pe ar la carpeta en el !irectorio !e nuestro pro(ecto C%B A4ora lo 7nico que 4ace &alta es 4acer la re&erencia en el la clase que se encar ara !e enerar el PDF# Por recomen!aci+n# se aconse-a que para tra$a-ar con esta li$rer.a# se utilice solamente una clase la cual enerara el PDF# ( con la que pro ramaremos el &ormato !esea!o%

Da con los pasos anteriores reali6a!os# estamos listos para empe6ar a tra$a-ar% En mi caso mi clase que me enera el p!&# se llama gen_pdf.php.

Hola mundo, en FPDF


En el e-emplo anterior ,imos la clase que es necesaria para crear un PDF# pero en este e-emplo no ser/ necesario# (a que no 4aremos uso !e nin una &unci+n !e FPDF# como crear una Ca$ecera# ta$la# entre otras% Nuestro c+!i o ser/ el si uiente
<?php require('fpdf/fpdf.php'); $pdf = new FPDF(); $pdf->AddPage(); $pdf->SetFont('Arial','B',16); $pdf->Cell(40,10,' !ola" #$ndo%'); $pdf->&$tp$t(); ?'

Como (a 4a$.amos menciona!o# es necesario 4acer la re&erencia a nuestra carpeta !e una manera correcta# (a que !e otra &orma nos marcara un error# o simplemente no creara na!a% A4ora una $re,e e1plicaci+n so$re ca!a coman!o% DespuEs !e incluir el &ic4ero !e la clase# creamos el o$-eto FDPF% El constructor FPDF') se usa aqu. con sus ,alores por !e&ecto* las p/ inas son !e tama5o aF alar a!o ( la uni!a! !e me!i!a es el mil.metro% Se po!r.a 4a$er !eclara!o e1pl.citamente con*
$pdf = new FPDF('P','((','A4');

El comman!o A!!Pa e')# nos a5a!e una pa ina en $lanco a la instanciacion !e nuestro PDF
$pdf->AddPage();

Antes !e que po!amos imprimir te1to# es o$li atorio esco er una &uente con SetFont')# si no# el !ocumento no ser/ ,/li!o% Esco emos Arial en ne rita !e tama5o 3G*
$pdf->SetFont('Arial','B',16);

A4ora po!emos imprimir una cel!a con Cell')% Una cel!a es una super&icie rectan ular# con $or!e si se quiere# que contiene te1to% Se imprime en la posici+n actual% Especi&icamos sus !imensiones# el te1to

'centra!o o alinea!o)# si queremos !i$u-ar o no los $or!es# ( !+n!e se u$icar/ la posici+n actual !espuEs !e imprimir la cel!a 'a la !erec4a# !e$a-o o al principio !e la si uiente l.nea)% Para a5a!ir el $or!e# !e$eremos 4acer esto*
$pdf->Cell(40,10,' !ola" #$ndo%');

Finalmente# el !ocumento se cierra ( se en,.a al na,e a!or con OutPut')%


$pdf->&$tp$t();

Cabeceras y uso de Imgenes


Para nuestro si uiente e-emplo# a4ora usaremos la clase pre!etermina!a que se utili6a en ca!a clase FPDF# ( comen6aremos !e la si uiente manera# a continuaci+n se mostrara el c+!i o !el arc4i,o p4p# si as. lo !esean# pue!en copiar el c+!i o que se presenta# ( pe arlo en un arc4i,o p4p ,ac.o# ( correrlo para que autom/ticamente nos a$ra el arc4i,o PDF# recuer!en acoplar !e una manera correcta la ruta !el arc4i,o FPDF% En caso !e que no entien!an la e1plicaci+n# pue!en leer los comentarios que !escri$en sus &unciones%
<?php require('fpdf.php'); class PDF extends FPDF { // Ca)e*era de p+gina function !eader() { // ,ogo $this->-(age('logo.p).png',10,/,00); // Arial )old 11 $this->SetFont('Arial','B',11); // #o2erno3 a la dere*ha $this->Cell(/0); // 45t$lo $this->Cell(00,10,'4itle',1,0,'C'); // Salto de l5nea $this->,n(60); } // Pie de p+gina function Footer() { // Po3i*i7n8 a 1"1 *( del final $this->Set9(-11); // Arial itali* /

$this->SetFont('Arial','-',/); // :;(ero de p+gina $this->Cell(0,10,'Page '.$this->Page:o().'/<n)=',0,0,'C'); } } // Crea*i7n del o)>eto de la *la3e heredada $pdf = new PDF(); $pdf->Alia3:)Page3(); $pdf->AddPage(); $pdf->SetFont('4i(e3','',16); for($i=1;$i<=40;$i++) $pdf->Cell(0,10,'-(pri(iendo l5nea n;(ero '.$i,0,1); $pdf->&$tp$t(); ?'

Pero, Cmo es que unciona este cdigo? Este e-emplo 4ace uso !e los mEto!os Header!" y Footer!" para procesar las ca$eceras ( pies !e p/ inas% Se llaman autom/ticamente% Da e1isten en la clase FPDF ori inal# pero no 4acen na!a% Por ello# tenemos que 4ere!ar la clase ( so$rescri$irlos% El lo otipo se imprime con el mEto!o Image!" especi&ican!o su esquina superior i6quier!a ( su anc4ura% La altura se calcula autom/ticamente respetan!o las proporciones !e la ima en% Para imprimir el n7mero !e p/ ina# se le pasa un ,alor nulo 'null) como anc4o !e la cel!a% Eso si ni&ica que la cel!a se e1ten!er/ 4asta el mar en !erec4o !e la p/ inaI pue!e ser 7til centrar el te1to% El n7mero actual !e la p/ ina se !e,uel,e por el mEto!os Page#oI mientras que el n7mero total !e p/ inas se o$tiene me!iante un ,alor especial !e Jn$K que ser/ sustitui!o cuan!o se cierre el !ocumento 'suponien!o que uste! antes utili6ara $lias#bPages!"% O$ser,e el uso !el mEto!o &et'!" que le permite especi&icar la posici+n en una u$icaci+n a$soluta respecto !el ori en !e coor!ena!as !e la p/ ina# empe6an!o por el principio o por el &inal% Otra caracter.stica interesante se usa en el e-emplo* el salto autom/tico !e p/ ina% Tan pronto como una cel!a cru6a el l.mite m/1imo !e la p/ ina 'a ; cm !el &inal# por !e&ecto)# se e-ecuta un salto ( se recupera la &uente% Aunque la ca$ecera ( el pie usan su propia &uente 'Arial)# el cuerpo !el !ocumento continua con Times% Este mecanismo autom/tico !e recuperaci+n tam$iEn se aplica a los colores ( al anc4o !e l.nea% El l.mite que &uer6a los saltos !e p/ ina pue!e esta$lecerse

con &et$utoPage(rea)!"% Como po!emos apreciar en la Ima en# nuestro PDF 4a si!o crea!o%

*ablas y Funciones ms com+le,as


Uno !e los usos que m/s se le !a a FPDF# es el !e crear ta$las# 4a( !istintas maneras# pero una !e las que m/s suelen ocuparse# es Din/mica o Est/ticamente# para reali6ar una ta$la est/tica no requiere !e muc4o# ,eamos c+mo reali6ar una ta$la Estaticamente*
function 4a)laSi(ple?$header@ < //Ca)e*era forea*h?$header a3 $*ol@ $thi3A'Cell?40"B"$*ol"1@C $thi3A',n?@C $thi3A'Cell?40"1"DholaD"1@C $thi3A'Cell?40"1"Dhola6D"1@C $thi3A'Cell?40"1"Dhola0D"1@C $thi3A'Cell?40"1"Dhola4D"1@C $thi3A',n?@C $thi3A'Cell?40"1"Dlinea D"1@C $thi3A'Cell?40"1"Dlinea 6D"1@C $thi3A'Cell?40"1"Dlinea 0D"1@C $thi3A'Cell?40"1"Dlinea 4D"1@C =

Como se pue!e apreciar en el e-emplo !e la parte !e arri$a# tenemos una Funci+n llama!a *abla&im+le!", nosotros autom/ticamente le asi namos ca!a cel!a con su respecti,a &uente ( te1to# !e esta manera es como la 4acemos est/tica# (a que no cam$iar.amos nin 7n !ato

<

!entro !e ella% A4ora que (a tenemos nuestro crea!or !e la ta$la necesitamos enerar el !ocumento ( llamar a esta &unci+n
$pdfEneF PDF?@C //45t$lo3 de la3 *ol$(na3 $headerEarraG?'Col$(na 1'"'Col$(na 6'"'Col$(na 0'"'Col$(na 4'@C $pdfA'Alia3:)Page3?@C //Pri(era p+gina $pdfA'AddPage?@C $pdfA'Set9?61@C //$pdfA'AddPage?@C $pdfA'4a)laSi(ple?$header@C //Seg$nda p+gina $pdfA'AddPage?@C $pdfA'Set9?61@C $pdfA'4a)laColore3?$header@C $pdfA'&$tp$t?@C ?'

B/sicamente# nuestro e-emplo Completo ( corrien!o que!ar.a !e la si uiente :anera%

A4ora pasaremos a 4acer una ta$la enera!a por FPDF# !e manera Dinmica. Cul es la Di erencia entre -statica y Dinmica?

De la manera Est/tica# solamente creamos una ta$la con un te1to que nosotros po!emos poner en el c+!i o# no cam$ia ( siempre est/ !e la misma manera# en cam$io una ta$la Din/mica# pue!e cam$iar !e conteni!o# (a que suelen usarse cuan!o se usan $ase !e !atos# en el si uiente e-emplo# se e1traer/n los !atos !e una ta$la# ( llenaremos un arre lo# el cual pasaremos por mEto!o MPOST a nuestra clase gen_pdf.php Na(amos primero a nuestra clase gen_pdf.php En nuestra Clase p4p# lo que 4acemos es 4acer la re&erencia como (a 4emos ,isto a nuestro li$rer.a FPDF# creamos la clase con los mEto!os FancyTable(), el cual lo 7nico que 4ace es crear una ta$la colorea!a# nuestra clase que enera el PDF# ser/ llama!a por mEto!o !e MPOST a tra,Es !e un $ot+n# !on!e reci$iremos un arre lo# ( lo que 4ace nuestra clase ser/ quitarle el Seriali6a!o# (a que el crea!or !e la ta$la en el in!e1# nos trae el arre lo Seriali6a!o# (a que si pasamos el Arre lo tal cual !espuEs !e crearlo# no ten!r/ el &ormato necesario para que sea car a!o en nuestra ta$la# a Continuaci+n el c+!i o*

F.#CI/# Q.- C0-$ 1$ *$(1$ C/1/0-$D$


f$n*tion Fan*G4a)le?$header" $data@ <

// Colore3" an*ho de l5nea G f$ente en negrita


$thi3A'SetFillColor?611"0"0@C $thi3A'Set4eHtColor?611@C $thi3A'SetDraFColor?16/"0"0@C $thi3A'Set,ineIidth?.0@C $thi3A'SetFont?''"'B'@C // Ca)e*era $F E arraG?40" 01" 41" 40" 10@C for?$iE0C$i<*o$nt?$header@C$iJJ@ $thi3A'Cell?$FK$iL"B"$headerK$iL"1"0"'C'"tr$e@C $thi3A',n?@C

// Me3ta$ra*i7n de *olore3 G f$ente3

$thi3A'SetFillColor?664"601"611@C $thi3A'Set4eHtColor?0@C $thi3A'SetFont?''@C // Dato3 $fill E fal3eC forea*h?$data a3 $roF@ < $thi3A'Cell?$FK0L"6"$roFK0L"',M'"0"','"$fill@C $thi3A'Cell?$FK1L"6"$roFK1L"',M'"0"','"$fill@C $thi3A'Cell?$FK6L"6"$roFK6L"',M'"0"'M'"$fill@C $thi3A'Cell?$FK0L"6"$roFK0L"',M'"0"'M'"$fill@C $thi3A'Cell?$FK4L"6"$roFK4L"',M'"0"'M'"$fill@C $thi3A',n?@C $fill E %$fillC =

// ,5nea de *ierre
$thi3A'Cell?arraG.3$(?$F@"0"''"'4'@C = =

A4ora# lo 7nico que pasaremos a 4acer ser/ lo si uiente# !eclarar la ,aria$le $datos# la cual reci$ir/ nuestro Arre lo que traeremos !es!e la otra clase# e instanciar nuestro PDF%
// Me*i)i(o3 arreglo )idi(en3ional 3erialiNado G lo de3*erialiNa(o3 $dato3 E $n3erialiNe?$rlde*ode?$.P&S4K'arreglo'L@@C //para(etro3 del *on3tr$*tor ?, orienta*i7n !oriNontal" (( (ediada en (il5(etro3" ,etter ta(aOo de la ho>a // &P& el *on3tr$*tor Q$e lla(a(o3 e3 el de la *la3e padre. $pdf E neF PDF?','"'(('"',etter'@C // 45t$lo3 de la3 *ol$(na3 $header E arraG?'41'" '46'" '40'" '44'" '41'@C // Carga de dato3 $pdfA'SetFont?'Arial'"''"/@C $pdfA'AddPage?@C

3P

$pdfA'Fan*G4a)le?$header"$dato3@C $pdfA'&$tp$t?@C

B/sicamente eso 4a si!o nuestra clase 0enera!ora !el PDF# a4ora solo nos 4ace &alta nuestra clase ta$la%p4p# el c+!i o es el si uiente

<?php //llenar arreglo de dato3... for?$iE0C $i<1C $iJJ@ < for?$>E0C $><1C $>JJ@ < $dato3K$iLK$>L E DRA?D . $i . D"D . $> . D@DC = = //2a*iar infor(a*i7n del arreglo en $na ta)la !4#, e*ho D<ta)le )orderE'1''DC for?$iE0C $i<1C $iJJ@ < e*ho D<tr'DC for?$>E0C $><1C $>JJ@ < e*ho D<td'D . $dato3K$iLK$>L . D</td'DC = e*ho D</tr'DC = e*ho D</ta)le'DC

// SerialiNa*i7n de Arreglo para en2io por P&S4 $3tr E 3erialiNe?$dato3@C $3tr E $rlen*ode?$3tr@C

//Boton en2iar" 2aria)le 3tr *ontiene arreglo )idi(en*ional 3erialiNado" 3e en2ia en $na 2aria)le o*$lta.

33

e*ho D<for( a*tionE'gen.pdf.php' (ethodE'P&S4'' <inp$t na(eE'arreglo' tGpeE'hidden' 2al$eE'$3tr'' <inp$t na(eE'en2iar' tGpeE'3$)(it' 2al$eE' Sn2iar '' </for('DC

?'

Como ,er/n en las 7ltimas l.neas !e c+!i o# tenemos un $ot+n# al cual le asi namos como acci+n llamar a nuestra clase enera!ora !el PDF# le asi namos a nuestra ,aria$le Qstr el ,alor que toma el arre lo# ( lo en,iamos por MPOST a nuestra clase enera!ora% El resulta!o !e$e ser lo si uiente* Este es el Formulario que 4emos crea!o# ( si 4acemos Clic en el $ot+n En,iar# nos !e$er.a crear la misma ta$la en PDF !e una &orma colori!a%

3;

D listo# 4emos lo ra!o e1traer !atos !e una ta$la !in/mica# el e-emplo anterior usa un arre lo que se enera autom/ticamente e incrementa los ,alores me!iante ; ciclos# uno para &ilas ( otro para columnas%

3C

Vous aimerez peut-être aussi