Documentos PDF en PHP5
Generación de PDF en PHP con FPDF 1.6
Agustín Ríos Reyes
02/04/2009
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.
1.6
PHP
5
2
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
Í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
3
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
4
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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
5
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
6
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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".
7
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
8
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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
9
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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:
10
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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
11
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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
12
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
13
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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
14
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
15
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
16
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
17
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
18
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
19
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
20
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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
21
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
22
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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:
23
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.
24
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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:
25
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
26
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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:
27
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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:
28
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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í:
29
Generación de PDF en PHP5 con FPDF 1.6
www.fpdf.org
http://es.php.net
Agustín Ríos Reyes
http://www.computadorasmilenio.net/manuales/
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.