Generar PDF con PHP

Este artículo ya se encuentra obsoleto.
Para una referencia actual leer: Generar archivos PDF con PHP

PHP entre sus características primarias tiene la capacidad de generar archivos PDF, tiene funciones especificas para personalizar y crear estos archivos pero son muy dificiles de utilizar, para ello existe una clase llamada R&OS: pdf class el cual provee métodos muy potentes y simplificados para la creación de archivos PDF.

ros_pdf_class.png

Descarga
Puedes descargar los archivos de manera gratuita en pdfClassesAndFonts_009e.zip. La documentación la puedes encontrar en readme.pdf.

Primeros Pasos
En la distribución de esta clase vienen incluido dos archivos: class.ezpdf.php y class.pdf.php los cuales contienen todas las propiedades y métodos necesarios para crear documentos PDF, además de ello hay una carpeta llamada fonts en el cual vienen algunas fuentes que podemos utilizar en la generación de pdfs.

Luego para crear un archivo pdf el primer paso es incluir las clases con la siguiente linea.

include ('class.ezpdf.php');

El siguiente paso es crear una instancia de la clase Cezpdf con la cual manejaremos la creación de pdf. Entonces creamos un archivo llamado pdf01.php donde crearemos nuestro primer documento pdf.

selectFont('fonts/Helvetica.afm');
$pdf->ezText('Mi primer pdf en PHP', 30);
$pdf->ezStream();
?>

Hemos empleado los métodos: selectFont para seleccionar la fuente con la que escribiremos los textos, ezText que permite agregar un texto con su respectivo tamaño de fuente y finalmente generamos el archivo con la función ezStream.

Opciones Avanzadas
Una de la opciones que tiene es la de incluir los datos del creador o autor en el archivo, esto lo podemos hacer pasando un array con los datos del creador a la función addInfo para ello creamos el archivo pdf02.php.

include('class.ezpdf.php');
$pdf =& new Cezpdf('a4');
$pdf->selectFont('fonts/courier.afm');
$datacreator = array (
					'Title'=>'Ejemplo PDF',
					'Author'=>'unijimpe',
					'Subject'=>'Ejemplo de PDF',
					'Creator'=>'unijimpe@hotmail.com',
					'Producer'=>'http://blog.unijimpe.net'
					);
$pdf->addInfo($datacreator);
$pdf->ezText("Ejemplo de PDF en PHP\n",20);
$pdf->ezText("Esta es una prueba de pdf\n",12);
$pdf->ezText("\n\n\n",10);
$pdf->ezText("Fecha: ".date("d/m/Y"),10);
$pdf->ezText("Hora: ".date("H:i:s")."\n\n",10);
$pdf->ezStream();

Finalmente veamos la creación de una tabla, para ello emplearemos el método ezTable el cual tiene dos parámetros, un array con con los datos a mostrar y un array con los títulos de la tabla, esto lo hacemos en el archivo pdf03.php.

selectFont('fonts/courier.afm');
$datacreator = array (
					'Title'=>'Ejemplo PDF',
					'Author'=>'unijimpe',
					'Subject'=>'PDF con Tablas',
					'Creator'=>'unijimpe@hotmail.com',
					'Producer'=>'http://blog.unijimpe.net'
					);
$pdf->addInfo($datacreator);

$data[] = array('num'=>1, 'mes'=>'Enero');
$data[] = array('num'=>2, 'mes'=>'Febrero');
$data[] = array('num'=>3, 'mes'=>'Marzo');
$data[] = array('num'=>4, 'mes'=>'Abril');
$data[] = array('num'=>5, 'mes'=>'Mayo');
$data[] = array('num'=>6, 'mes'=>'Junio');
$data[] = array('num'=>7, 'mes'=>'Julio');
$data[] = array('num'=>8, 'mes'=>'Agosto');
$data[] = array('num'=>9, 'mes'=>'Septiembre');
$data[] = array('num'=>10, 'mes'=>'Octubre');
$data[] = array('num'=>11, 'mes'=>'Noviembre');
$data[] = array('num'=>12, 'mes'=>'Diciembre');

$titles = array('num'=>'Numero', 'mes'=>'Mes');

$pdf->ezText("Meses en PHP\n",16);
$pdf->ezText("Listado de Meses\n",12);
$pdf->ezTable($data,$titles,'',$options );
$pdf->ezText("\n\n\n",10);
$pdf->ezText("Fecha: ".date("d/m/Y"),10);
$pdf->ezText("Hora: ".date("H:i:s")."\n\n",10);
$pdf->ezStream();
?>

Con lo cual obtenemos el siguiente resultado en nuestro browser.

ezpdf-demo.gif

Para concluir con este tema les dejo los archivos fuente con los ejemplos que hemos desarrollado es este posta para descarga.

Comentarios Total 406 comentarios

Antonio
Publicado: 08/04/2014 7:24 am

Saldos amigo, no puedo descargar el zip con la clase y los archivos php para realizar este ejercicio, tendrás otro sitio donde pueda descargarlo o me lo podrías facilitar por favor? :) Esta muy bueno tu foro me ha servido de mucho, agradezco de antemano tu tiempo, estamos en contacto, saludos.

jose
Publicado: 11/06/2014 12:28 pm

hola espero me puedan ayudar, una pregunta como genero una LISTA en pdf por php NO TABLA requiero una lista
ejemplo:
Nombre: jose
Apaterno: perez.
…..

y otra como concateno 2 variables. ejemplo:
Alumno: Jose Perez

yeid
Publicado: 09/07/2014 6:55 pm

amigo unijimpe, algun correo donde te pueda escribir una duda ? veo que estás muy ausente por este medio.

necesito saber como poner una imagen mediante esta clase pero sin coordenadas

se que se hace asi

$pdf->addJpegFromFile(‘images/firma.jpg’,80,160,200); //izq, distancia de abajo a arriba, tamaño

pero quiero que la imagen no quede quemada en una posicion, porque si al crear el pdf por tanta informacion, se crean tres hojas, esa firma va salir en la primera hoja y en esas coordenadas…

De antemano gracias

fernando
Publicado: 13/09/2014 10:17 am

Gracias por este aporte, solamente con una consulta porque al cargar mas datos no me los muestra y me da el error al cargar el PDF, alguien sabe como solucionar esto.
De antemano gracias por la ayuda.

facundo
Publicado: 28/04/2015 8:01 pm

Buenas noches, estoy buscando una funcion php que convierta a excel, tenes alguno para recomendar o pasarme? muchisimas gracias

yaneli
Publicado: 15/06/2015 6:09 pm

hola amigos del foro, quiero pedirles ayuda sobre como puedo unir multitablas este es mi codigo, les agradeceria mucho su apoyo

SELECT c.nombre, c.apellido, c.email, c.estado, c.direccion, c.cp, c.telefono, c.numerotarjeta
FROM clientes c
INNER JOIN pedidos pe ON c.clientePK = pe.clienteFK
WHERE nombre = «1»
GROUP BY nombre ASC

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)