martes, 20 de agosto de 2013

Crear PDF en PHP


Los Documentos PDF se han establecido en un estándar de las presentaciones de Texto en la Web, ya que cada vez son más usados como reportes o presentación de documentos de Texto.

En PHP existen dos extensiones para crear PDF: PDFLib y ClibPDF, el cual son de pago o para uso comercial; Por otro lado existe FDPF que es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, esta librería es gratis y libre, aunque no es tan rápida como las anteriores cumplen perfectamente las expectativas para la creación de pdf’s.
En este tutorial les enseñare como crear diferentes archivos PDF en PHP, para ello como ya les mencione anteriormente haremos uso de la librería FPDF, además utilizaremos AppServer (Ver Como Instalar AppServer), tal como se muestra a continuación:


Herramienta Software:

- FPDF          Descargar

1° En primer lugar descargar FPDF, luego extráigalo, tal como se muestra en la imagen:


2° Después de extraer FPDF cópielo en el Directorio “www”, ubicado en “C:\AppServ\www”, tal como se muestra en la imagen:


* Luego de copiar la carpeta FPDF en el Directorio especificado, empezaremos con el primer ejemplo en el que mostraremos un Texto, tal como se muestra en la imagen:


FPDF

FPDF(string orientation, string unit, mixed size)

Descripción: Esta es la clase constructor. Permite establecer el formato de página, la orientación y la unidad de medida es usada en todos los métodos.


AddPage

AddPage(string orientation, mixed size)

Descripción: Añade una nueva página al documento.


SetFont

SetFont(string family, string style, float size)

Descripción: Establece la fuente usada para imprimir cadenas de caracteres. Es obligatorio este método por lo menos una vez antes de imprimir texto o el documento no será válido.


Cell

Cell(float w, float h, string txt, mixed border, int ln, string align, boolean fill, mixed link)

Descripción: Imprime una celda rectangular con bordes opcionales, color de fondo y secuencia de caracteres, La esquina superior izquierda de la celda corresponde a la posición actual.


Output

Output(string name, string dest)

Descripción: Envía el documento a un destino dado: una cadena, un fichero local o al navegador.


* En el siguiente ejemplo mostraremos un documento PDF con una cabecera con imagen, pie de página y un conjunto de líneas de texto, tal como se muestra en la imagen:


Header

Header()

Descripción: Este método es usado para generar la cabecera de página. Es automáticamente invocada por AddPage() y no debería ser invocada directamente en la aplicación.


Image

Image(string file, float x, float y, float w, float h, string type, mixed link)

Descripción: Imprime una imagen en la página. Los formatos admitidos son: JPEG, PNG y GIF.


Ln

Ln(float h)

Descripción: Ejecuta un salto de línea. Por defecto, el valor es igual a la altura de la última celda impresa.


Footer

Footer()

Descripción: Este método es usado para generar el pie de página. Es automáticamente invocado por AddPage() y Close() y no debería ser invocado directamente por la aplicación.


SetY

SetY(float y)

Descripción: Mueve la abscisa actual de regreso al margen izquierdo y establece la ordenada. Si el valor es negativo, esta es relativa a la parte inferior de la página.


PageNo

PageNo()

Descripción: Devuelve el número de página actual.


AliasNbPages

AliasNbPages(string alias)

Descripción: Define un alias para el número de páginas. El valor por efecto es: {nb}.


* En el siguiente ejemplo mostraremos un documento PDF con párrafos justificados, haciendo uso de colores y utilizando un documento de texto externo, tal como se muestra en la imagen:


GetStringWidth

float GetStringWidth(string s)

Descripción: Devuelve la longitud de una cadena en la unidad del usuario. Una fuente debe ser seleccionada.


SetX

SetX(float x)

Descripción: Define la abscisa de la posición actual. Si el valor es negativo, esta es relativa a la derecha de la página.


SetDrawColor

SetDrawColor(int r, int g, int b)

Descripción: Define el color usado para las operaciones de graficación (línea, rectángulos y bordes de celdas). Este puede ser expresado en componentes RGB o en escala de grises.


SetFillColor

SetFillColor(int r, int g, int b)

Descripción: Define el color por todas las operaciones de relleno (rectángulos rellenos y fondos de celdas). Este puede ser expresado en componentes RGB o en escala de grises.


SetTextColor

SetTextColor(int r, int g, int b)

Descripción: Define el color usado por el texto. Este puede ser expresado en componentes RGB o en escala de grises.


SetLineWidth

SetLineWidth(float width)

Descripción: Define el ancho de la línea. Por defecto, el valor es igual a 0.2 mm. EL método puede ser llamado antes de la creación de la primera página y el valor es retenido de página a página.


MultiCell

MultiCell(float w, float h, string txt, mixed border, string align, boolean fill)

Descripción: Este método permite imprimir texto con saltos de línea. Cada vez que la línea llega al extremo derecho de la celda o aparece un carácter de fin de línea, se ejecuta un salto de línea y se crea automáticamente otra celda debajo de la actual. El texto se encuentra justificado por defecto.


SetTitle

SetTitle(string title, boolean isUTF8)

Descripción: Define el título del documento.


SetAuthor

SetAuthor(string autor, boolean isUTF8)

Descripción: Define el autor del documento.


* En el siguiente ejemplo mostraremos una variante del ejemplo anterior, tal como se muestra en la imagen:


GetY

float GetY()

Descripción: Retorna la coordenada de la posición actual


SetLeftMargin

SetLeftMargin(float margin)

Descripción: Define el margen izquierdo. El método puede ser invocado antes de la creación de la primera página.


AcceptPageBreak

boolean AcceptBreak()

Descripción: 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. Este método es invocado automáticamente y no debería ser llamado directamente por la aplicación.


* En el siguiente ejemplo mostraremos un documento PDF con diferentes tipos de tablas que tiene FPDF, tal como se muestra en la imagen:


La Primera Tabla, es la forma más básica de construirla, tiene un conjunto de celdas con bordes simples, todas del mismo tamaño y alineadas a la izquierda; El resultado de la tabla tiene un diseño muy rudimentario, pero es muy práctico.


La Segunda Tabla, tiene algunas mejoras, comparando con la tabla anterior, los títulos están centrados y el texto se alinea a la derecha, las líneas horizontales se han eliminado, además en esta se pueden definir el tamaño de las columnas.


La Tercera Tabla, es similar a la segunda, con la excepción de que esta tiene colores. El coloreado alternativo de las filas se consigue alternando celdas transparentes y coloreadas.

En este ejemplo no se detalla los diferentes métodos, ya que estos están explicados en los ejemplos anteriores.


* En este último ejemplo mostraremos un documento PDF con enlaces internos y externos (Texto e Imagenes), además en este ingresaremos texto en formato HTML, cuyas etiquetas reconocidas o las que se interpretan son: <b>, <i>, <u>, <a> y <br>, las demás se ignoran; tal como se muestra en la imagen:


Write

Write(float h,  string txt, mixed link)

Descripción: 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.


AddLink

int AddLink()

Descripción: Crea una nueva referencia interna y retorna su identificador. Una referencia interna es un área seleccionable la cual lo dirige a otro lugar dentro del documento.


SetLink

SetLink(int link, float y, int page)

Descripción: Define la página y posición al que un enlace hace referencia.


SetFontSize

SetFontSize(float size)

Descripción: Define el tamaño de la fuente actual.


Para estos ejemplos me he basado en la información que muestra FPDF en su Sitio Oficial.

Nota: Cualquier consulta comentar o visitar la página de Facebook para resolver sus dudas…

Autor: SPaRk.

No hay comentarios:

Publicar un comentario

Google Maps