martes, 21 de septiembre de 2010

PDFs dinámicos con php

Buenas a todos, este es mi primera entrada en soy_informático y espero que les guste o al menos le sirva a alguien. Lo primero agradecer a geek que me deje participar en su blog, espero que no se arrepienta...

Para generar PDFs dinámicos en PHP hay 2 formas (si alguien conoce más formas serán bienvenidas):
1ª Usando la extensión PHP PDF Lib que es de pago y requiere instalación (y si no eres el administrador de tu servidor hosting ya puedes esperar).
2º Utilizando la librería class.ezpdf.php y alguna de sus extensiones como class.backgroundpdf.php, que son gratuitas y no requieren instalación (solo hay que descargarse las librerías y subirlas al servidor).

La segunda opción tarda un poco mas de procesar los pdfs, pero es muchísimo más sencilla de utilizar y ponerla a punto. Para muestra un botón.

PDF dinámico con imagen de logo corporativo en el centro:

1
<?php
2
include('class.ezpdf.php');
3 include(
'class.backgroundpdf.php');
4
5
$pdf = new backgroundPDF('a4', 'portrait', 'image', array('img'=>'logo.jpg', 'width'=>560, 'height'=>420, 'xpos'=>0, 'ypos'=>200));
6
$pdf->selectFont('./fonts/Helvetica.afm');
7
$pdf->ezText('PDF generado dinámicamente', 50);
8
$pdf->ezText('', 12);
9
$pdf->ezText('Ejemplo de PDF utilizando una imagen como Fondo.', 12);
10
$pdf->ezNewPage();
11
$pdf->ezText('Pagina 2', 50);
12
$pdf->ezStream();
13
?>



Edito: buscando me he dado cuenta que hay bastantes librerías más para generar pdf con php aquí os dejo una lista.
FPDF
TCPDF
FPDI
domPDF

3 comentarios:

  1. ooohhhhhh primera entrada del señor DarkDhan. En primer lugar gracias a ti por querer colaborar. Me ha encantado el articulo, muy claro y muy interesante.
    Un saludo crack

    ResponderEliminar
  2. ¡Está guapo! Lo que hace es crear el pdf con el new y luego meterle parámetros, no?

    Personalmente ahora no lo puedo probar y tengo una duda: Para hacer tablas y dar formato chulo a los textos, ¿cómo se hace? Se pone código html? (Creo que con ASP sí que se puede hacer así)

    Saludos

    ResponderEliminar
  3. Exacto, funciona como una clase de cualquier lenguaje orientado a objetos.

    Creas una nueva instancia con el operador new y luego llamas a las funciones internas con la flecha ->

    Si te soy sincero, no lo he explotado del todo, y solo he hecho un par de pruebas, pero si que se le pueden añadir tablas con la función: $pdf->ezTable($data);

    Si quieres más información tienes el manual en la web principal:
    http://www.ros.co.nz/pdf/

    y este es el manual:
    http://www.ros.co.nz/pdf/readme.pdf

    saludos

    ResponderEliminar