generacion de pdf en php con fpdf

Upload: 14enero2009

Post on 10-Jul-2015

4.631 views

Category:

Documents


1 download

TRANSCRIPT

1.6Documentos PDF en PHP5Generacin de PDF en PHP con FPDF 1.6Agustn Ros Reyes 02/04/2009

PHP 5PDF

Describe la forma de cmo usar la librera FPDF 1.6 con PHP5 para generar archivos PDF para mostrar informacin en la web, describe los mtodos mediante ejemplos.

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

NDICE Introduccin...3 Librera FPDF3 Mtodos de la clase FPDF..4 Nuestro primer documento ..17 Desplazamiento de los cursores....18 Sobrescribir los Mtodos..20 Cabecera...20 Imagen de cabecera..21 Pie de pgina.....22 Colores de Texto, Rellenos, Bordes y Saltos de Lnea ...24 Tablas...27 Obtencin de datos de una Base d Datos .28

2 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Introduccin Como probablemente ya sabe, el HTML no es el nico formato para mostrar contenido en Internet. Adems de los distintos tipos de imgenes, tenemos varios formatos capaces de contener textos como Adobe PDF, Macromedia Flash o algunos documentos alternativos escritos en XML como los archivos grficos SVG (Grficos Vectoriales Escalables), WML (Lenguaje de Marcas Inalmbrico) o XUL (Lenguaje de interfaz de Usuario en XML con Mozilla). Cada uno de estos tipos de documentos tiene su propio terreno y de nosotros depende elegir cul o cules utilizar para dotar a nuestra Web de mayores posibilidades. Los archivos Adobe PDF se han establecido como un estndar en los documentos de texto para la Web. Existen dos extensiones escritas para PHP, PDFLib y ClibPDF, capaces de generar archivos PDF. Desgraciadamente estas libreras son de uso comercial y requieren el pago de algn tipo de licencia. Adems de las extensiones anteriores, tenemos una serie de aplicaciones escritas completamente en PHP que permiten llegar al mismo resultado, como R&OS PDF o FPDF. No son tan rpidas como las extensiones, pero cumplen perfectamente nuestras expectativas.

Librera FPDFLa librera FPDF, creada en septiembre de 2001(su versin ms actual es la 1.6 escrita en septiembre del 2008), no necesita licencia de uso, ni tampoco alguna configuracin especial de PHP. Lo nico que necesita es la librera, que la puede descargar del sitio Web http://www.fpdf.org. FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. La F de FPDF significa Free (gratis y libre): puede usted usarla para cualquier propsito y modificarla a su gusto para satisfacer sus necesidades. FPDF tiene otras ventajas: funciones de alto nivel. Esta es una lista de sus principales caractersticas:

Eleccin de la unidad de medida, formato de pgina y mrgenes Gestin de cabeceras y pies de pgina Salto de pgina automtico Salto de lnea y justificacin del texto automticos Admisin de imgenes (JPEG, PNG y GIF) Colores Enlaces Admisin de fuentes TrueType, Type1 y codificacin Compresin de pgina

FPDF no necesita de ninguna extensin para PHP (excepto zlib para activar la compresin y GD para soporte a GIF) y funciona con PHP4 y PHP5. 3 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

La librera principal contiene la definicin de una clase, que debe instanciar para poder generar sus documentos. Nuestro cdigo inicial debera ser algo parecido a:

El constructor se utiliza de esta forma con los valores por defecto que son pgina A4 con orientacin vertical y el tamao medido en milmetros. El primer parmetro del constructor permite elegir entre orientacin vertical (L) u horizontal (P). El segundo parmetro sirve para que las medidas de referencia se hagan en base a puntos (pt), milmetros (mm), centmetro (cm) o pulgadas (in). El ltimo parmetro nos ofrece la oportunidad de elegir entre los diferentes formatos de pgina que existen: A3, A4, A5, Letter y Legal.

Mtodos de la clase FPDFEl constructor de la clase: Permite establecer el formato de pgina, la orientacin y la unidad de medida usada en todos los mtodos (excepto para tamaos de fuentes). FPDF([string orientation [, string unit [, mixed format]]]) Parmetros Orientation: Orientacin de pgina por defecto. Los posibles valores son (indiferente a maysculas): P o Portrait (normal) L o Landscape (apaisado) Valor por defecto es P. Unit: Unidad de medida de usuario. Los posibles valores son: pt: punto mm: milimetro cm: centimetro in: pulgada Un punto es igual a 1/72 de pulgada, es decir cerca de 0.35 mm (siendo una pulgada 2.54 cm). Esta es una unidad muy comn en tipografa; los tamaos de fuentes son expresados en esa unidad. Valor por defecto es mm. Format: El formato usado por las pginas. Es puede ser uno de los siguientes valores (indiferente a maysculas): A3 A4 A5 Letter Legal 4 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

O un formato personalizado en la forma de un array de dos elementos conteniendo el ancho y el alto (expresado en la unidad dada por unit).

Mtodo Addpage() Aade una nueva pgina al documento. El origen del sistema de coordenadas es la esquina superior izquierda y se incrementan hacia abajo. AddPage([string orientation ,[ mixed format]]) Parmetros Orientation: Orientacin de pgina. Los valores posibles son (indiferente a maysculas): P o Portrait (normal) L o Landscape (apaisado) El valor por defecto el mismo que que se ha pasado al constructor. Format: Formato de pgina. Puede ser uno de los siguientes valores (indiferente a maysculas): A3 A4 A5 Letter Legal O un array conteniendo el ancho y el alto (en unidades definidas por el usuario).El valor por defecto es el que fue pasado al constructor. Mtodo Header() Este mtodo es usado para generar la cabecera de pgina. Es automticamente invocada por AddPage() y no deberia ser invocada directamente en la aplicacin. La implementacin en FPDF es vacia, asi que si desea un procesamiento especifico debe generar una subclase y sobreescribir el mtodo. Mtodo Footer() Este mtodo es usado para generar el pie de pgina. Es automticamente invocado por AddPage() y Close() y no sebera ser invocado directamente por la aplicacin. La implementacin en FPDF es vacia, as que si desea un procesamiento especfico debe hacer subclase y sobreescribir el mtodo.

5 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Mtodo SetMargins SetMargins(float left, float top [, float right]) Define los mrgenes izquierdo, superior, y derecho. Por defecto, son iguales a 1 cm. Invoque este mtodo para cambiarlas. Parmetros left: Margen izquierdo. top: Margen superior. right: Margen derecho. Valor por defecto es el mismo que el de la izquierda. Mtodo SetFont SetFont(string family [, string style [, float size]]) Establece la fuente usada para imprimir cadenas de caracteres. Es obligatorio invocar este mtodo por lo menos una vez antes de imprimir texto o el documento resultante no ser vlido. La fuente puede ser una estndar o una adicionada va el mtodo AddFont(). La fuentes estndar usan codificacin cp1252 (Western Europe) de Windows. El mtodo puede ser invocado antes que la primera pgina sea creada y es mantenido de pgina a pgina. Si slo desea cambiar el tamao de la fuente actual, es ms simple invocar SetFontSize(). Nota: Para las fuentes estndar, los archivos de mtrica de fuente deben ser accesibles. Se buscan en este orden: El directorio especificado por la constante FPDF_FONTPATH (si es que ha sido definida) El directorio de fuentes incluido en el directorio que contiene fpdf.php (si es que existe) Cualquier directorio accesible mediante include() Ejemplo del primer casa (note la barra diagonal final):

Si el archivo correspondiente a la fuente requerida no es encuentra, se genera el error "Could not include font metric file".

6 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Parmetros family: Familia de fuente. Puede ser un nombre definido por AddFont() o una de las familias estndar (no sensible a maysculas o minsculas): Courier (fixed-width) Helvetica o Arial (sinnimo; sans serif) Times (serif) Symbol (symbolic) ZapfDingbats (symbolic) Tambien es posible pasar un cadena vacia. En este caso, se mantiene la familia actual.

Style: Estilo de fuente. Los valores posibles son (no sensible a maysculas o minsculas): cadena vacia: regular B: bold I: italic U: underline O cualquier combinacin. El valor por defecto es regular. Los estilos Bold e italic no aplican para Symbol y ZapfDingbats.

Size: Tamao de fuente en puntos. El valor por defecto es el tamao actual. Si ningn tamao ha sido especificado desde el comienzo del documento, toma el valor de 12. Mtodo AddFont AddFont(string family [, string style [, string file]]) Importa una fuente TrueType o Type1 y la hace disponible. Es necesario primero generar un archivo de definicin de fuente con la utilidad makefont.php.

El archivo de definicin (y el archivo de fuente mismo cuando es incorporado) debe estar presente en el directorio de fuentes. Si no puede ser encontrado, es generado el error "Could not include font definition file". Parmetros Family: Familia de fuente. El nombre puede ser elegido de forma arbitraria. Style: Estilo de fuente. Los valores posibles son (case insensitive): cadena vaca: regular B: bold (negrita) I: italic (cursiva) BI o IB: bold italic (negrita cursiva) El valor por defecto es regular. 7 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

File: El archivo de definicin de fuente. Por defecto, el nombre es compuesto de la familia y estilo de fuente, en minsculas y sin espacios. Mtodo SetFontSize SetFontSize(float size) Define el tamao de la fuente actual. Parmetros Size: El tamao (en puntos). Mtodo SetTextColor SetTextColor(int r [, int g, int b]) Define el color usado por el texto. Este puede ser expresado en componentes RGB o escala de grises. El mtodo puede ser invocado antes que la primera pgina sea creada y el valor es retenido de pgina a pgina. Parmetros r: Si g y b son suministrados, componente rojo; si no, si no indica nivel de grises. Valores entre 0 y 255. g: Componente verde (entre 0 y 255) b:Componente azul (entre 0 y 255) Mtodo SetFillColor SetFillColor(int r [, int g, int b]) Define el color usado por todas las operaciones de relleno (rectngulos rellenos y fondos de celdas). Este puede ser expresado en componentes RGB o escala de grises. El mtodo puede ser invocado antes que la primera pgina sea creada y el valor es conservado de pgina a pgina. Parmetros r: Si g y b son suministrados, componente rojo; si no, si no indica nivel de grises. Valores entre 0 y 255. g: Componente verde (entre 0 y 255) b:Componente azul (entre 0 y 255) Mtodo SetDrawColor SetDrawColor(int r [, int g, int b]) Define el color usado para las operaciones de graficacin (lineas, rectangulos, y bordes de celdas ). Este puede ser expresado en componentes RGB o en escala de grises. El mtodo puede 8 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

ser invocado antes de que la primera pgina sea creada y el valor sea conservado de pgina a pgina. Parmetros r: Si g y b son suministrados, componente rojo; si no, si no indica nivel de grises. Valores entre 0 y 255. g: Componente verde (entre 0 y 255) b:Componente azul (entre 0 y 255) Mtodo Text Text(float x, float y, string txt) Imprime una cadena de caracteres. El origen es a la izquierda del primer carcter, sobre la lnea base. Este mtodo permite colocar una cadena precisamente en la pgina, pero es usualmente ms fcil usar Cell(), MultiCell() o Write() los cuales son los mtodos estndares para imprimir texto. Parmetros X:Abscisa del origen. Y: Ordenada del origen. txt: Cadena a ser impresa. Mtodo Cell Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]]) Imprime una celda (de rea rectangular) bordes opcionales, color de fondo y secuencia de caracteres La esquina superior izquierda de la celda corresponde a la posicin actual. El texto puede ser alineado o centrado. Despus de invocar, la posicin actual se desplaza a la derecha o la siguiente lnea. Es posible poner una referencia en el texto. Si esta el salto de pgina automtico habilitado y la celda esta por fuera del lmite, es realizado un salto de pgina antes de producir la salida. Parmetros W:Ancho de Celda. Si es 0, la celda se extiende hasta la mrgen derecha. H: Alto de celda. Valor por defecto: 0. Txt: cadena a ser impresa. Valor por defecto: cadena vacia. Border: Indica si los bordes deben se dibujados alrededor de la celda. El valor puede ser un nmero: 9 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

0: sin borde 1: marco o una cadena contenido alguno o todos de los siguientes caracteres (en cualquier orden): L: izquierda T: superior R: derecha B: inferior Valor por defecto: 0. Ln: Indica donde la posicin actual debera ir antes de invocar. Los valores posibles son: 0: a la derecha 1: al comienzo de la siguiente lnea 2: debajo Poner 1 es equivalente a poner 0 y llamar justo despus Ln(). Valor por defecto: 0. Align: Permite centrar o alinear el texto. Los posibles valores son: L o una cadena vaca: alineacin izquierda (valor por defecto) C: centro R: alineacin derecha Fill: Indica si elfondo de la celda debe ser dibujada (true) o transparente (false). Valor por defecto: false. Link:URL o identificador retornado por AddLink(). Mtodo MultiCell MultiCell(float w, float h, string txt [, mixed border [, string align [, boolean fill]]]) Este mtodo permite imprimir texto con saltos de lnea. Estos pueden ser automticos (tan pronto como el texto alcanza el borde derecho de la celda) o explcito (va el carcter \n). Tantas celdas como sean necesarias son creadas, uno debajo de otra. El texto puede ser alineado, centrado o justificado. El bloque de celda puede ser enmarcado y el fondo impreso. Parmetros W: Ancho de celdas. Si 0, estos se extienden hasta l margen derecha de la pgina. H: Alto de las celdas. Txt: Cadena para imprimir. Border: Indica si los bordes deben ser dibujados al rededor del bloque la celda. El valor puede ser un nmero: 0: no borde 1: marco 10 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

O una cadena conteniendo algn o todos los siguientes caracteres (en cualquier orden): L: izquierda T: superior R: derecha B: inferior Valor por defecto: 0. Align: Establece la alineacin de texto. Los posibles valores son: L: alineacin a la izquierda C: centrado R: alineacin a la derecha J: justificacin (valor por defecto) Fill: Indica si el fondo de la celda debe ser dibujado (true) o transparente (false). Valor por defecto: false. Mtodo Write Write(float h, string txt [, mixed link]) Este mtodo imprime el texto desde la posicin actual. Cuando el margen derecho es alcanzado (o el carcter \n es alcanzado) se produce un salto de lnea y el texto contina desde el margen izquierdo. Una vez el mtodo termine, la posicin actual es dejada justo al final del texto. Es posible poner una referencia sobre el texto. Parmetros H:Alto de lnea. Txt: Cadena a ser impresa. Link: URL o identificador regresado por AddLink() Mtodo SetAutoPageBreak SetAutoPageBreak(boolean auto [, float margin]) Activa o desactiva el modo de salto de pgina automtico. Cuando es habilitado, el segundo parmetro es la distancia de la parte inferior de la pgina que define al lmite desencadenante. Por defecto, el modo esta activado y el margen es 2cm. Parmetros Auto: Boleano indicando si el modo debera ser activado o desactivado. Margin: Distancia desde la parte inferior de la pgina

11 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Mtodo AcceptPageBreak boolean AcceptPageBreak() En cualquier momento que un salto de pgina es encontrado, es invocado el mtodo, y el salto es emitido o no dependiendo del valor retornado. La implementacin por defecto retorna un valor de acuerdo a el modo seleccionado por SetAutoPageBreak(). Este mtodo es invocado automticamente y no debera ser llamado directamente por la aplicacin. Mtodo Ln Ln([float h]) Ejecuta un salto de lnea. La abscisa actual regresa al margen izquierdo y la ordenada aumenta en la cantidad pasada como parmetro. Parmetros H: La altura del salto. Por defecto, el valor es igual a la altura de la ltima celda impresa. Mtodo Output string Output([string name, string dest]) Enva el documento a un destino dado: una cadena, un fichero local o al navegador. En el ltimo caso, puede utilizarse la extensin -plug in- (si existe) o forzarse un cuadro de dilogo de descarga. El mtodo invoca ante todo a Close() si es necesario cerrar el documento. Parmetros Name: El nombre del fichero. Si no se especifica, el documento se enva al navegador (destino I) con el nombre doc.pdf. Dest: Destino al que enviar el documento. Puede tener uno de los siguientes valores: I: enva el fichero al navegador de forma que se usa la extensin (plug in) si est disponible. El nombre dado en nombre se usa si el usuario escoge la opcin "Guardar como..." en el enlace que genera el PDF. D: enva el fichero al navegador y fuerza la descarga del fichero con el nombre especificado por nombre. F: guarda el fichero en un fichero local de nombre nombre. S: devuelve el documento como una cadena. nombre se ignora. Mtodo Close Close() Termina el documento pdf. No es necesario llamar explcitamente este mtodo debido a que Output() lo hace de forma automtica. Si el documento no contiene pginas, es invocado AddPage() para prevenir obtener un documento invlido. 12 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Mtodo Image Image(string file [, float x [, float y [, float w [, float h [, string type [, mixed link]]]]]]) Imprime una imagen en la pgina. Las dimensiones pueden establecerse de diferentes maneras: mediante la especificacin explcita de ancho y alto (en unidades definidas por el usuario) mediante la indicacin de una sola de las dimensiones: la otra se calcular automticamente para mantener la proporcin original sin indicar ninguna dimensin explcita. En este caso, la imagen se imprime a 72 puntos por pulgada Los formatos admitidos son JPEG, PNG y GIF. La extensin GD es necesaria para GIF. Para el JPEG, se admiten todas sus versiones: escala de grises color verdadero (24 bits) CMYK (32 bits) Para el PNG se permiten: escala de grises de 8 bits como mximo (256 niveles) color indexado color verdadero (24 bits) pero no se admite: entrelazado transparencia (canal Alfa) Para el GIF: en el caso de un GIF animado, slo el primer fotograma se utilizar. Si se definiera un color como transparente, se tomar en cuenta. El formato puede ser especificado explcitamente o deducido a partir de la extensin del fichero. Es posible asociar un enlace a la imagen. Nota: si una imagen se usa varias veces, slo se incluir una copia en el fichero resultante. Parmetros File:Nombre del fichero que contiene la imagen. X: Abscisa de la esquina superior izquierda. Si no se especifica o es igual a null, se utilizar la abscisa actual. Y: Ordenada de la esquina superior izquierda. Si no se especifica o es igual a null, se utilizar la ordenada actual, adems, un salto de pgina es invocado primero si es necesario (en caso de que 13 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

est habilitado el salto de pgina automtico) y, despus de la llamada, la ordenada actual se mueve a la parte inferior de la imagen. W: Ancho de la imagen en la pgina. Si no se especifica o es cero, se calcula automticamente. H: Alto de la imagen en la pgina. Si no se especifica o es cero, se calcula automticamente. Type: Formato de la imagen. Los posibles valores son (indiferente a maysculas): JPG, JPEG, PNG y GIF. Si no se especifica, el tipo se deduce de la extensin del fichero. Link:URL o identificador devuelto por el mtodo AddLink(). Mtodo Line Line(float x1, float y1, float x2, float y2) Traza una lnea entre dos puntos. Parmetros x1: Abscisa del primer punto. y1: Ordenada del primer punto. x2: Abscisa del segundo punto. y2: Ordenada del segundo punto. Mtodo Link Link(float x, float y, float w, float h, mixed link) Pone una referencia a un rea rectangular de la pgina. El texto o la imagen referenciada son generalmente puesta via Cell(), Write() o Image(), pero este mtodo puede ser til por ejemplo para definir un rea seleccionable dentro una imagen. Parmetros X: Abscisa de la esquina superior izquierda del rectngulo. Y: Ordenada de la esquina superior izquierda del rectngulo. W: Ancho del rectngulo. H: Alto del rectngulo. Link: URL o identificador regresada por AddLink(). Mtodo PageNo int PageNo() Devuelve el nmero de pgina actual.

14 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Mtodo AliasNbPages AliasNbPages([string alias]) Define un alias para el nmero total de pginas. Se sustituira en el momento que el documento se cierre. Parmetros Alias: El alias. Valor por defecto: {nb}. Mtodo SetAuthor SetAuthor(string author [, boolean isUTF8]) Define el autor del documento. Parmetros Autor:El nombre del autor. isUTF8:Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true). Valor por defecto: false. Mtodo SetCreator SetCreator(string creator [, boolean isUTF8]) Define el creador de el documento. Este es tpicamente el nombre de la aplicacin que genera el pdf. Parmetros Creator: El nombre del creador. isUTF8: Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true). Valor por defecto: false. Mtodo SetSubject SetSubject(string subject [, boolean isUTF8]) Define el tema del documento. Parmetros Subject:El tema. isUTF8: Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true). Valor por defecto: false.

15 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Mtodo SetTitle SetTitle(string title [, boolean isUTF8]) Define el ttulo de el documento. Parmetros Title: El ttulo. isUTF8: Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true). Valor por defecto: false. Mtodo SetX SetX(float x) Define la abscisa de la posicin actual. Si el valor pasado es negativo, esta es relativa a la derecha de la pgina. Parmetros X: El valor de la abscisa. Mtodo SetY SetY(float y) Mueve la abscisa actual de regreso al mrgen izquierdo y establece la ordenada. Si el valor pasado es negativo, esta es relativa a la parte inferior de la pgina. Parmetros Y: El valor de la ordenada. Mtodo SetXY

SetXY(float x, float y) Define la abscisa y ordenada de la posicin actual. Si los valores pasados son negativos, ellos son relativos respectivamente a la derecha y la parte inferior de la pgina. Parmetros X: El valor de la abscisa. Y: El valor de la ordenada.

16 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Mtodo GetX float GetX() Retorna la abscisa de la posicin actual. Mtodo GetY float GetY() Retorna la ordenada de la posicin actual.

Nuestro primer documentoEl siguiente ejemplo muestra la creacin bsica de un documento PDF de forma lineal, el cual imprime un texto en una celda con mrgenes y con el texto centrado.

La primera lnea define una constante que contiene la ruta donde estn almacenadas las fuentes. Despus de las funciones que incluyen la clase y la instancia del objeto tenemos una serie de llamadas a mtodos que nos permiten manipular el documento a nuestro antojo. El mtodo AddPage () aade una pgina al documento con la orientacin que Le pida. En este caso hemos aadido una con orientacin vertical, que es la elegida por defecto. SetFont() selecciona una fuente tomando como parmetro el tipo, la propiedad (negrita, cursiva) y el tamao. Por ltimo tenemos una llamada a los mtodos Cell () y Output (), que escriben el texto en una posicin determinada del documento y lo muestran en pantalla respectivamente, como puede ver en la figura.

17 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Desplazamiento de los cursores Existen varias funciones para colocar el cursor en distintas partes del documento. SetX() y SetY() colocan el texto en el punto indicado, en la medida seleccionada (centmetros, milmetros, etc). SetX () desplaza el cursor de izquierda a derecha tantas unidades como indique el parmetro y SetY() de arriba hacia abajo. Si se les pasa un nmero negativo, el origen se tomar desde la derecha o desde abajo respectivamente. SetXY() toma dos valores y permite realizar las dos operaciones con una sola instruccin.

18 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

19 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Sobrescribir los MtodosLa clase FPDF contiene algunos mtodos vacos que debe escribir usted si quiere que sus documentos queden profesionales. Puede crear un objeto propio que herede del objeto FPDF e implementar algunas caractersticas avanzadas.

Cabecera La cabecera de un documento es un conjunto de texto escrito en la parte superior del folio y que debe aparecer en todas las pginas. La clase FPDF implementa el mtodo header () que se llama cada vez que existe un salto de pgina. Puesto que el mtodo est vaco en FPDF, tendr que crear un objeto nuevo que herede todos sus mtodos e implemente la cabecera.

El mtodo header() configura un tipo de letra determinado, en negrita, avanza el cursor 8 centmetros hacia la derecha e imprime una celda con el ttulo. El mtodo Ln(20) inserta un salto de lnea cuya altura es determinada por el argumento. Para probar el objeto hemos hecho un bucle que imprime 48 lneas (dos pginas) y as comprobar que la cabecera aparece invariable. El resultado se puede observar en la figura

20 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Imagen de cabecera Tambin es posible aadir una imagen a la cabecera con el mtodo Image(). La construccin es la siguiente: Image(fichero, x, y, ancho, alto, tipo, enlace) Ahora que sabe cmo insertar imgenes, puede incluir en la cabecera el logotipo de su empresa o asociacin.

21 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Pie de pginaDe la misma forma, puede sobrescribir el mtodo que imprime el pie de pgina de la clase FPDF. Este mtodo recibe el nombre de Footer() y tiene el mismo tratamiento que la cabecera; cada vez que existe un salto de pgina se hace una llamada al mismo. Nuestro pie de pgina puede quedar de la siguiente forma:

22 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

El mtodo AliasNbPages () cuenta el nmero de pginas cuando el documento est cerrado y sustituye la marca {nb} por este nmero.

Los dos script juntos mostraran algo como lo siguiente.

23 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Colores de Texto, Rellenos, Bordes y Saltos de LneaEn este ejemplo veremos cmo agregar color al texto con el mtodo SetTextColor(), agregar color de relleno a las celdas con el mtodo SetFillColor(). Agregar color alos bordes con el mtodo SetDrawColor() y los saltos de lnea con el mtodo Ln(). Para esto el ejemplo abre unos archivos y agrega su contenido el PDF, esto se veria algo asi.

El cdigo es el siguiente:

24 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

25 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

Se definen dos propiedades del documento: ttulo (SetTitle()) y autor (SetAuthor()). Las propiedades pueden verse de dos maneras. La primera es abrir el documento directamente con Acrobat Reader, vaya al men Archivo y seleccione la opcin Propiedades del documento. La segunda, tambin disponible desde el plug-in, es hacer clic con el botn derecho y seleccione Propiedades del documento. Usare el segundo mtodo, el cual muestra la siguiente pantalla:

26 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

TablasUna tabla no es ms que un conjunto de celdas colocadas en un orden determinado. Podemos diferenciar entre la cabecera de la tabla, que contendr las propiedades, y los datos. Si realiza una clase para escribir tablas puede hacer tambin esa diferenciacin, cambiando el tipo de letra, el tamao o el color. El cdigo siguiente muestra cmo se puede instaurar una clase para la creacin de tablas fcilmente:

27 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

El resultado es el siguiente:

En este caso, los datos se sacan de un array de dos dimensiones, pero puede utilizar la librera de bases de datos o la de XML, para extraerlos. Los datos los recibe el mtodo tabla ( ), que los enva a sus correspondientes mtodos para ser tratados. El funcionamiento bsico consiste en la creacin repetitiva de celdas cuyo nmero coincidir con el nmero de datos existentes en el array. Todas las celdas se muestran seguidas, dando sensacin de ser una tabla, como puede ver en la figura.

Obtencin de datos de una Base d DatosPara este ejemplo crearemos una base de datos que se llama calificaciones, la cual contiene una tabla llamada califica. La cual conste de 4 registros id_alumno, nombre, grupo, promedio. La que mostraremos de la tabla ser el nombre y el promedio del alumno, esto quedara algo as:

28 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/

Generacin de PDF en PHP5 con FPDF 1.6www.fpdf.org http://es.php.net

El resultado sera el siguiente:

La generacin de sus propios archivos ya no es un misterio y puede implementar clases muchos ms potentes que las mostradas en este manual para sus propios proyectos. La inclusin de colores, imgenes y tablas de distintos tipos harn del lector un profesional de la edicin Web.

29 Agustn Ros [email protected] http://www.computadorasmilenio.net/manuales/