1.6 Documentos PDF en PHP5 Generación de PDF en PHP con FPDF 1.6 Agustín Ríos Reyes 02/04/2009
PHP 5 PDF
Describe la forma de cómo usar la librería FPDF 1.6 con PHP5 para generar archivos PDF para mostrar información en la web, describe los métodos mediante ejemplos.
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
ÍNDICE Introducción…………………………………………………...…………………………………3 Librería FPDF……………………………………………………………………………………3 Métodos de la clase FPDF………………………………………………………………..………4 Nuestro primer documento ……………………………………………..………………………17 Desplazamiento de los cursores………………………………………………...………….……18 Sobrescribir los Métodos……………………………………………………………….….……20 Cabecera…………………………………………..……………………………………….……20 Imagen de cabecera…………………………………………………………………………..…21 Pie de página………...………………………………………………………………………..…22 Colores de Texto, Rellenos, Bordes y Saltos de Línea ………………………………………...24 Tablas………………………………………………………………………………..…….……27 Obtención de datos de una Base d Datos ……………………………………….………………28
2 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Introducción Como probablemente ya sabe, el HTML no es el único formato para mostrar contenido en Internet. Además de los distintos tipos de imágenes, tenemos varios formatos capaces de contener textos como Adobe PDF, Macromedia Flash o algunos documentos alternativos escritos en XML como los archivos gráficos SVG (Gráficos Vectoriales Escalables), WML (Lenguaje de Marcas Inalámbrico) 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 cuál o cuáles utilizar para dotar a nuestra Web de mayores posibilidades. Los archivos Adobe PDF se han establecido como un estándar en los documentos de texto para la Web. Existen dos extensiones escritas para PHP, PDFLib y ClibPDF, capaces de generar archivos PDF. Desgraciadamente estas librerías son de uso comercial y requieren el pago de algún tipo de licencia. Además 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 rápidas como las extensiones, pero cumplen perfectamente nuestras expectativas.
Librería FPDF La librería FPDF, creada en septiembre de 2001(su versión más actual es la 1.6 escrita en septiembre del 2008), no necesita licencia de uso, ni tampoco alguna configuración especial de PHP. Lo único que necesita es la librería, 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 propósito y modificarla a su gusto para satisfacer sus necesidades. FPDF tiene otras ventajas: funciones de alto nivel. Esta es una lista de sus principales características:
Elección de la unidad de medida, formato de página y márgenes Gestión de cabeceras y pies de página Salto de página automático Salto de línea y justificación del texto automáticos Admisión de imágenes (JPEG, PNG y GIF) Colores Enlaces Admisión de fuentes TrueType, Type1 y codificación Compresión de página
FPDF no necesita de ninguna extensión para PHP (excepto zlib para activar la compresión y GD para soporte a GIF) y funciona con PHP4 y PHP5. 3 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
La librería principal contiene la definición de una clase, que debe instanciar para poder generar sus documentos. Nuestro código inicial debería ser algo parecido a:
El constructor se utiliza de esta forma con los valores por defecto que son página A4 con orientación vertical y el tamaño medido en milímetros. El primer parámetro del constructor permite elegir entre orientación vertical (L) u horizontal (P). El segundo parámetro sirve para que las medidas de referencia se hagan en base a puntos (pt), milímetros (mm), centímetro (cm) o pulgadas (in). El último parámetro nos ofrece la oportunidad de elegir entre los diferentes formatos de página que existen: A3, A4, A5, Letter y Legal.
Métodos de la clase FPDF El constructor de la clase: Permite establecer el formato de página, la orientación y la unidad de medida usada en todos los métodos (excepto para tamaños de fuentes). FPDF([string orientation [, string unit [, mixed format]]]) Parámetros Orientation: Orientación de página por defecto. Los posibles valores son (indiferente a mayúsculas): 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 común en tipografía; los tamaños de fuentes son expresados en esa unidad. Valor por defecto es mm. Format: El formato usado por las páginas. Es puede ser uno de los siguientes valores (indiferente a mayúsculas): A3 A4 A5 Letter Legal 4 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.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).
Método Addpage() Añade una nueva página al documento. El origen del sistema de coordenadas es la esquina superior izquierda y se incrementan hacia abajo. AddPage([string orientation ,[ mixed format]]) Parámetros Orientation: Orientación de página. Los valores posibles son (indiferente a mayúsculas): P o Portrait (normal) L o Landscape (apaisado) El valor por defecto el mismo que que se ha pasado al constructor. Format: Formato de página. Puede ser uno de los siguientes valores (indiferente a mayúsculas): 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. Método Header() Este método es usado para generar la cabecera de página. Es automáticamente invocada por AddPage() y no deberia ser invocada directamente en la aplicación. La implementación en FPDF es vacia, asi que si desea un procesamiento especifico debe generar una subclase y sobreescribir el método. Método Footer() Este método es usado para generar el pie de página. Es automáticamente invocado por AddPage() y Close() y no sebería ser invocado directamente por la aplicación. La implementación en FPDF es vacia, así que si desea un procesamiento específico debe hacer subclase y sobreescribir el método.
5 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Método SetMargins SetMargins(float left, float top [, float right]) Define los márgenes izquierdo, superior, y derecho. Por defecto, son iguales a 1 cm. Invoque este método para cambiarlas. Parámetros left: Margen izquierdo. top: Margen superior. right: Margen derecho. Valor por defecto es el mismo que el de la izquierda. Método SetFont SetFont(string family [, string style [, float size]]) Establece la fuente usada para imprimir cadenas de caracteres. Es obligatorio invocar este método por lo menos una vez antes de imprimir texto o el documento resultante no será válido. La fuente puede ser una estándar o una adicionada vía el método AddFont(). La fuentes estándar usan codificación cp1252 (Western Europe) de Windows. El método puede ser invocado antes que la primera página sea creada y es mantenido de página a página. Si sólo desea cambiar el tamaño de la fuente actual, es más simple invocar SetFontSize(). Nota: Para las fuentes estándar, los archivos de métrica 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 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Parámetros family: Familia de fuente. Puede ser un nombre definido por AddFont() o una de las familias estándar (no sensible a mayúsculas o minúsculas): Courier (fixed-width) Helvetica o Arial (sinónimo; 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 mayúsculas o minúsculas): cadena vacia: regular B: bold I: italic U: underline O cualquier combinación. El valor por defecto es regular. Los estilos Bold e italic no aplican para Symbol y ZapfDingbats.
Size: Tamaño de fuente en puntos. El valor por defecto es el tamaño actual. Si ningún tamaño ha sido especificado desde el comienzo del documento, toma el valor de 12. Método 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 definición de fuente con la utilidad makefont.php.
El archivo de definición (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". Parámetros Family: Familia de fuente. El nombre puede ser elegido de forma arbitraria. Style: Estilo de fuente. Los valores posibles son (case insensitive): cadena vacía: regular B: bold (negrita) I: italic (cursiva) BI o IB: bold italic (negrita cursiva) El valor por defecto es regular. 7 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
File: El archivo de definición de fuente. Por defecto, el nombre es compuesto de la familia y estilo de fuente, en minúsculas y sin espacios. Método SetFontSize SetFontSize(float size) Define el tamaño de la fuente actual. Parámetros Size: El tamaño (en puntos). Método 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 método puede ser invocado antes que la primera página sea creada y el valor es retenido de página a página. Parámetros 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) Método SetFillColor SetFillColor(int r [, int g, int b]) Define el color usado por todas las operaciones de relleno (rectángulos rellenos y fondos de celdas). Este puede ser expresado en componentes RGB o escala de grises. El método puede ser invocado antes que la primera página sea creada y el valor es conservado de página a página. Parámetros 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) Método SetDrawColor SetDrawColor(int r [, int g, int b]) Define el color usado para las operaciones de graficación (lineas, rectangulos, y bordes de celdas ). Este puede ser expresado en componentes RGB o en escala de grises. El método puede 8 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
ser invocado antes de que la primera página sea creada y el valor sea conservado de página a página. Parámetros 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) Método Text Text(float x, float y, string txt) Imprime una cadena de caracteres. El origen es a la izquierda del primer carácter, sobre la línea base. Este método permite colocar una cadena precisamente en la página, pero es usualmente más fácil usar Cell(), MultiCell() o Write() los cuales son los métodos estándares para imprimir texto. Parámetros X:Abscisa del origen. Y: Ordenada del origen. txt: Cadena a ser impresa. Método 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 posición actual. El texto puede ser alineado o centrado. Después de invocar, la posición actual se desplaza a la derecha o la siguiente línea. Es posible poner una referencia en el texto. Si esta el salto de página automático habilitado y la celda esta por fuera del límite, es realizado un salto de página antes de producir la salida. Parámetros W:Ancho de Celda. Si es 0, la celda se extiende hasta la márgen 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 número: 9 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.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 posición actual debería ir antes de invocar. Los valores posibles son: 0: a la derecha 1: al comienzo de la siguiente línea 2: debajo Poner 1 es equivalente a poner 0 y llamar justo después Ln(). Valor por defecto: 0. Align: Permite centrar o alinear el texto. Los posibles valores son: L o una cadena vacía: alineación izquierda (valor por defecto) C: centro R: alineación 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(). Método MultiCell MultiCell(float w, float h, string txt [, mixed border [, string align [, boolean fill]]]) Este método permite imprimir texto con saltos de línea. Estos pueden ser automáticos (tan pronto como el texto alcanza el borde derecho de la celda) o explícito (vía el carácter \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. Parámetros W: Ancho de celdas. Si 0, estos se extienden hasta l margen derecha de la página. 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 número: 0: no borde 1: marco 10 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
O una cadena conteniendo algún o todos los siguientes caracteres (en cualquier orden): L: izquierda T: superior R: derecha B: inferior Valor por defecto: 0. Align: Establece la alineación de texto. Los posibles valores son: L: alineación a la izquierda C: centrado R: alineación a la derecha J: justificación (valor por defecto) Fill: Indica si el fondo de la celda debe ser dibujado (true) o transparente (false). Valor por defecto: false. Método Write Write(float h, string txt [, mixed link]) Este método imprime el texto desde la posición actual. Cuando el margen derecho es alcanzado (o el carácter \n es alcanzado) se produce un salto de línea y el texto continúa desde el margen izquierdo. Una vez el método termine, la posición actual es dejada justo al final del texto. Es posible poner una referencia sobre el texto. Parámetros H:Alto de línea. Txt: Cadena a ser impresa. Link: URL o identificador regresado por AddLink() Método SetAutoPageBreak SetAutoPageBreak(boolean auto [, float margin]) Activa o desactiva el modo de salto de página automático. Cuando es habilitado, el segundo parámetro es la distancia de la parte inferior de la página que define al límite desencadenante. Por defecto, el modo esta activado y el margen es 2cm. Parámetros Auto: Boleano indicando si el modo debería ser activado o desactivado. Margin: Distancia desde la parte inferior de la página
11 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Método AcceptPageBreak boolean AcceptPageBreak() En cualquier momento que un salto de página es encontrado, es invocado el método, y el salto es emitido o no dependiendo del valor retornado. La implementación por defecto retorna un valor de acuerdo a el modo seleccionado por SetAutoPageBreak(). Este método es invocado automáticamente y no debería ser llamado directamente por la aplicación. Método Ln Ln([float h]) Ejecuta un salto de línea. La abscisa actual regresa al margen izquierdo y la ordenada aumenta en la cantidad pasada como parámetro. Parámetros H: La altura del salto. Por defecto, el valor es igual a la altura de la última celda impresa. Método Output string Output([string name, string dest]) Envía el documento a un destino dado: una cadena, un fichero local o al navegador. En el último caso, puede utilizarse la extensión -plug in- (si existe) o forzarse un cuadro de diálogo de descarga. El método invoca ante todo a Close() si es necesario cerrar el documento. Parámetros Name: El nombre del fichero. Si no se especifica, el documento se envía al navegador (destino I) con el nombre doc.pdf. Dest: Destino al que enviar el documento. Puede tener uno de los siguientes valores: I: envía el fichero al navegador de forma que se usa la extensión (plug in) si está disponible. El nombre dado en nombre se usa si el usuario escoge la opción "Guardar como..." en el enlace que genera el PDF. D: envía 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. Método Close Close() Termina el documento pdf. No es necesario llamar explícitamente este método debido a que Output() lo hace de forma automática. Si el documento no contiene páginas, es invocado AddPage() para prevenir obtener un documento inválido. 12 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Método Image Image(string file [, float x [, float y [, float w [, float h [, string type [, mixed link]]]]]]) Imprime una imagen en la página. Las dimensiones pueden establecerse de diferentes maneras: mediante la especificación explícita de ancho y alto (en unidades definidas por el usuario) mediante la indicación de una sola de las dimensiones: la otra se calculará automáticamente para mantener la proporción original sin indicar ninguna dimensión explícita. En este caso, la imagen se imprime a 72 puntos por pulgada Los formatos admitidos son JPEG, PNG y GIF. La extensión 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 máximo (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, sólo el primer fotograma se utilizará. Si se definiera un color como transparente, se tomará en cuenta. El formato puede ser especificado explícitamente o deducido a partir de la extensión del fichero. Es posible asociar un enlace a la imagen. Nota: si una imagen se usa varias veces, sólo se incluirá una copia en el fichero resultante. Parámetros 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, además, un salto de página es invocado primero si es necesario (en caso de que 13 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
esté habilitado el salto de página automático) y, después de la llamada, la ordenada actual se mueve a la parte inferior de la imagen. W: Ancho de la imagen en la página. Si no se especifica o es cero, se calcula automáticamente. H: Alto de la imagen en la página. Si no se especifica o es cero, se calcula automáticamente. Type: Formato de la imagen. Los posibles valores son (indiferente a mayúsculas): JPG, JPEG, PNG y GIF. Si no se especifica, el tipo se deduce de la extensión del fichero. Link:URL o identificador devuelto por el método AddLink(). Método Line Line(float x1, float y1, float x2, float y2) Traza una línea entre dos puntos. Parámetros x1: Abscisa del primer punto. y1: Ordenada del primer punto. x2: Abscisa del segundo punto. y2: Ordenada del segundo punto. Método Link Link(float x, float y, float w, float h, mixed link) Pone una referencia a un área rectangular de la página. El texto o la imagen referenciada son generalmente puesta via Cell(), Write() o Image(), pero este método puede ser útil por ejemplo para definir un área seleccionable dentro una imagen. Parámetros X: Abscisa de la esquina superior izquierda del rectángulo. Y: Ordenada de la esquina superior izquierda del rectángulo. W: Ancho del rectángulo. H: Alto del rectángulo. Link: URL o identificador regresada por AddLink(). Método PageNo int PageNo() Devuelve el número de página actual.
14 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Método AliasNbPages AliasNbPages([string alias]) Define un alias para el número total de páginas. Se sustituira en el momento que el documento se cierre. Parámetros Alias: El alias. Valor por defecto: {nb}. Método SetAuthor SetAuthor(string author [, boolean isUTF8]) Define el autor del documento. Parámetros 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. Método SetCreator SetCreator(string creator [, boolean isUTF8]) Define el creador de el documento. Este es típicamente el nombre de la aplicación que genera el pdf. Parámetros 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. Método SetSubject SetSubject(string subject [, boolean isUTF8]) Define el tema del documento. Parámetros 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 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Método SetTitle SetTitle(string title [, boolean isUTF8]) Define el título de el documento. Parámetros Title: El título. isUTF8: Indica si la cadena está codificada en la norma ISO-8859-1 (false) o UTF-8 (true). Valor por defecto: false. Método SetX SetX(float x) Define la abscisa de la posición actual. Si el valor pasado es negativo, esta es relativa a la derecha de la página. Parámetros X: El valor de la abscisa. Método SetY SetY(float y) Mueve la abscisa actual de regreso al márgen izquierdo y establece la ordenada. Si el valor pasado es negativo, esta es relativa a la parte inferior de la página. Parámetros Y: El valor de la ordenada. Método SetXY
SetXY(float x, float y) Define la abscisa y ordenada de la posición actual. Si los valores pasados son negativos, ellos son relativos respectivamente a la derecha y la parte inferior de la página. Parámetros X: El valor de la abscisa. Y: El valor de la ordenada.
16 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Método GetX float GetX() Retorna la abscisa de la posición actual. Método GetY float GetY() Retorna la ordenada de la posición actual.
Nuestro primer documento El siguiente ejemplo muestra la creación básica de un documento PDF de forma lineal, el cual imprime un texto en una celda con márgenes y con el texto centrado.
La primera línea define una constante que contiene la ruta donde están almacenadas las fuentes. Después de las funciones que incluyen la clase y la instancia del objeto tenemos una serie de llamadas a métodos que nos permiten manipular el documento a nuestro antojo. El método AddPage () añade una página al documento con la orientación que Le pida. En este caso hemos añadido una con orientación vertical, que es la elegida por defecto. SetFont() selecciona una fuente tomando como parámetro el tipo, la propiedad (negrita, cursiva) y el tamaño. Por último tenemos una llamada a los métodos Cell () y Output (), que escriben el texto en una posición determinada del documento y lo muestran en pantalla respectivamente, como puede ver en la figura.
17 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.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 (centímetros, milímetros, etc). SetX () desplaza el cursor de izquierda a derecha tantas unidades como indique el parámetro y SetY() de arriba hacia abajo. Si se les pasa un número 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 instrucción.
18 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
19 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Sobrescribir los Métodos La clase FPDF contiene algunos métodos vacíos que debe escribir usted si quiere que sus documentos queden profesionales. Puede crear un objeto propio que herede del objeto FPDF e implementar algunas características 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 páginas. La clase FPDF implementa el método header () que se llama cada vez que existe un salto de página. Puesto que el método está vacío en FPDF, tendrá que crear un objeto nuevo que herede todos sus métodos e implemente la cabecera.
El método header() configura un tipo de letra determinado, en negrita, avanza el cursor 8 centímetros hacia la derecha e imprime una celda con el título. El método Ln(20) inserta un salto de línea cuya altura es determinada por el argumento. Para probar el objeto hemos hecho un bucle que imprime 48 líneas (dos páginas) y así comprobar que la cabecera aparece invariable. El resultado se puede observar en la figura
20 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Imagen de cabecera También es posible añadir una imagen a la cabecera con el método Image(). La construcción es la siguiente: Image(fichero, x, y, ancho, alto, tipo, enlace) Ahora que sabe cómo insertar imágenes, puede incluir en la cabecera el logotipo de su empresa o asociación.
21 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Pie de página De la misma forma, puede sobrescribir el método que imprime el pie de página de la clase FPDF. Este método recibe el nombre de Footer() y tiene el mismo tratamiento que la cabecera; cada vez que existe un salto de página se hace una llamada al mismo. Nuestro pie de página puede quedar de la siguiente forma:
22 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
El método AliasNbPages () cuenta el número de páginas cuando el documento está cerrado y sustituye la marca {nb} por este número.
Los dos script juntos mostrarían algo como lo siguiente.
23 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Colores de Texto, Rellenos, Bordes y Saltos de Línea En este ejemplo veremos cómo agregar color al texto con el método SetTextColor(), agregar color de relleno a las celdas con el método SetFillColor(). Agregar color alos bordes con el método SetDrawColor() y los saltos de línea con el método Ln(). Para esto el ejemplo abre unos archivos y agrega su contenido el PDF, esto se veria algo asi.
El código es el siguiente:
24 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
25 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Se definen dos propiedades del documento: título (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 opción Propiedades del documento. La segunda, también disponible desde el plug-in, es hacer clic con el botón derecho y seleccione Propiedades del documento. Usare el segundo método, el cual muestra la siguiente pantalla:
26 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
Tablas Una tabla no es más 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 también esa diferenciación, cambiando el tipo de letra, el tamaño o el color. El código siguiente muestra cómo se puede instaurar una clase para la creación de tablas fácilmente:
27 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.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 librería de bases de datos o la de XML, para extraerlos. Los datos los recibe el método tabla ( ), que los envía a sus correspondientes métodos para ser tratados. El funcionamiento básico consiste en la creación repetitiva de celdas cuyo número coincidirá con el número de datos existentes en el array. Todas las celdas se muestran seguidas, dando sensación de ser una tabla, como puede ver en la figura.
Obtención de datos de una Base d Datos Para 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 quedaría algo así:
28 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/
Generación de PDF en PHP5 con FPDF 1.6 www.fpdf.org
http://es.php.net
El resultado sería el siguiente:
La generación de sus propios archivos ya no es un misterio y puede implementar clases muchos más potentes que las mostradas en este manual para sus propios proyectos. La inclusión de colores, imágenes y tablas de distintos tipos harán del lector un profesional de la edición Web.
29 Agustín Ríos Reyes
[email protected] http://www.computadorasmilenio.net/manuales/