Como generar PDFs en PHP

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Generar PDFs en PHP

Hay muchas formas distintas de generar PDFs en PHP y con distintas librerías. Todas tienen sus ventajas y desventajas, solo tienes que encontrar una que se adapte mejor a lo que deseas mostrar o que te facilite más el trabajo que vas a hacer.

En este post vamos a ver como generar PDFs con una librería llamada TCPDF. Esta librería para PHP está bastante equilibrada en cuanto a ventajas y desventajas y tiene una buena documentación para poder resolver tus dudas. Está basado en FDPF, una librería estable escrita en PHP4. TCDPF trae mejoras sobre esta librería y por otro lado está escrita en PHP5.

Para empezar a usar esta librería no tienes que hacer nada demasiado complicado. Simplemente tienes que descargarla y añadirla a tu proyecto PHP. Para opciones más avanzadas necesitarás permitirle a la librería que pueda escribir en las carpetas de caché e imágenes. Para usarlo hay que incluir el archivo tcdpf.php como mínimo. En caso de que quieras usarlo en un nivel más avanzado tendrás que incluir más archivos de configuración ya que el por defecto no funcionará en muchos casos.

Empezando a implementar y configurar el PDF

require_once(‘tcpdf/tcdpf.php’);

Tras incluir el archivo en nuestro código PHP crearemos una clase que extienda la clase por defecto TCPDF para poder crear un header y un footer propior. Siempre puedes dejar el header y el footer que usa TCPDF por defecto, pero si los cambias podrás darle un estilo propio a tus PDFs y ajustarlo a tus gustos.

class MYPDF extends TCDPF{

public function Header(){

$this->setJPEGQuality(90);

$this->Image(‘logo.png’, 120, 10, 75, 0, ’PNG’, ’https://www.google.com’);

}

public function Footer(){

$this->SetY(-15);

$this->SetFont(PDF_FONT_NAME_MAIN, ‘I’, 8);

$this->Cell(0, 10, ‘el texto del footer’, 0, false, ‘C’);

}

}

A parte del header y el footer puedes crear otras funciones para poder facilitarte la creación de el PDF como una opción que cada vez que la llames te cree un cuadro de texto nuevo.

En este ejemplo lo que hemos hecho es poner una imagen de header mediante la función Image que trae la librería y un texto en el footer con una fuente específica.

La función Image utiliza estos parámetros para poder configurar la imagen que quieras mostrar:

Image($file, $x=», $y=», $w=0, $h=0, $type=», $link=», $align=», $resize=false, $dpi=300, $palign=», $ismask=false, $imgmask=false, $border=0, $fitbox=false, $hidden=false, $fitonpage=false);

Las opciones que ya están escritas en la función son los valores por defecto que aplica si no le especificamos nada en ese campo. Siempre tendremos que ponerlos en ese orden para no crear errores y si queremos poner un valor en un campo pero no en el anterior podemos reescribir el valor por defecto para no crear problemas de posicionamiento de los valores.

Para más información siempre puedes visitar la página de TCDPF donde muestran diferentes ejemplos.

En el apartado del footer usamos 3 funciones nuevas:

  • SetY especifica la posición de lo que vayamos a poner con respecto al eje de la Y. Por otro lado tenemos SetX que se emplea de igual manera pero para el eje de la X y SetXY para poder posicionar en el eje de la X y de la Y sin tener que utilizar 2 funciones.
  • SetFont indica la fuente, el estilo y el tamaño de la letra que vamos a usar en esa sección. SetFont(family, style = », size = 0, fontfile = »)
  • Cell especifica una celda en la que se va a escribir el texto que deseamos mostrar. En TCPDF todo o casi todo lo que vaya a ser escrito irá dentro de cell o multicell según lo que nos convenga en el momento. Cell(w, h = 0, txt = », border = 0, ln = 0, align = », fill = 0, link = nil, stretch = 0, ignore_min_height = false, calign = ‘T’, valign = ‘M’)

Creando el cuerpo del PDF

En el siguiente trozo de código vamos a crear un objeto TCPDF con los valores por defecto, definiremos los metadatos del PDF, añadiremos una nueva página y le añadiremos algo de texto.

// Creamos el objeto TCPDF que en este caso usa la clase MYPDF que extiende a TCPDF

$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ‘UTF-8’, false);

// Añadimos los metadatos del PDF (autor,título,palabras clave, etc.)

$pdf->SetCreator(PDF_CREATOR);

$pdf->SetAuthor(‘Olaf Lederer’);

$pdf->SetTitle(‘TCPDF Example’);

$pdf->SetSubject(‘TCPDF Tutorial’);

$pdf->SetKeywords(‘TCPDF, PDF, example, tutorial’);

// Añadimos una página nueva al PDF

$pdf->AddPage();

// Añadimos una nueva línea de texto con la función cell de la que hemos hablado antes

$pdf->Cell(0, 0, ‘Hola mundo’, 1, 1, ‘L’, 1, 0);

Durante la creación de nuestro PDF podemos adaptarlo todo a nuestro gusto e ir posicionando todos nuestros elementos de una forma u otra para que nos vaya quedando mejor con las funciones SetX, SetY o SetXY. También podemos añadir más imagenes con la función Image que hemos visto antes.

Otras funciones básicas que nos podrían interesar para retocar nuestro PDF son:

  • MultiCell para crear varias celdas en una línea y poder separar en bloques el texto. MultiCell(w, h, txt, border = 0, align = ‘J’, fill = 0, ln = 1, x = », y = », reseth = true, stretch = 0, ishtml = false, autopadding = true, maxh = 0)
  • SetFillColor para poner un color de relleno SetFillColor(col1 = 0, col2 = -1,, col3 = -1,, col4 = -1))
  • SetTextColor especifica el color del texto SetTextColor(col1 = 0, col2 = -1,, col3 = -1,, col4 = -1))
  • Ln para crear un salto de línea Ln(h = », cell = false)

Al estar en un archivo PHP podremos usar todos los métodos PHP que necesitemos sin problema para poder seleccionar ciertas opciones o para poner alguna condición de uso según nos lleguen los datos. Algunos métodos que podemos usar sin ningún problema son for, if, foreach, etc.

Una vez que hemos terminado de poner datos y valores a nuestro PDF debemos avisar que es el final del PDF y como queremos que lo muestre. Esto se consigue mediante la función Output que viene con TCPDF. Este método guardará el PDF creado bajo el nombre que le demos y envía el archivo al buscador para que lo muestre o descargue, según le indiquemos.

Output(name = », dest = »)

La opción dest es el destino al que se enviará el PDF y los parámetros posibles son:

  • I: Parámetro por defecto. Envía el archivo al buscador y lo abre en la misma página.
  • D: Envía el archivo al buscador y fuerza la descarga con el nombre dado.
  • F: Guarda el archivo en un servidor local con el nombre dado.
  • S: Devuelve el documento como string. Ignora el nombre que se le ha dado.
  • FI: Equivalente a F + I (Lo abre en el navegador y lo guarda en un servidor local).
  • FD: Equivalente a F + D (Guarda el archivo en un servidor local y fuerza la descarga en el navegador).

Esto es un breve resumen de como usar TCPDF y veais lo fácil que es crear archivos PDF online. Si queréis adentraros más a fondo en la creación de PDFs con esta librería o de mejorar los que ya teneis con nuevos métodos aquí tenéis una serie de ejemplos de TCPDF para haceros una idea de como usarlos y todas las variantes y opciones que tienes a la hora de crear un PDF.

Más...

Nueva web credithousecar.com

Ha sido un placer realizar todo el diseño y la imagen corporativa de credithousecar.com Una web moderna y actual, con un diseño

Más...

Nueva web credithousecar.com

Ha sido un placer realizar todo el diseño y la imagen corporativa de credithousecar.com Una web moderna y actual, con un diseño

Deja un comentario

Ebook Gratis 7 claves para atraer clientes a tu web