Generar Pdf desde Php

Una vez más me he encontrado con formas más sencillas para hacer las cosas, con las que normalmente me tomaba mucho tiempo y me volvía un ocho para hacerlas funcionar. En esta ocasión veremos como generar un pdf desde un script php sin la necesidad de hacer demasiados llamados y con estilo y gráficos en ellos.

Ya había intentado hacer esto varias veces, quizás para muchos sea una cosa sencilla, pero pues he aquí otra forma de hacerlo. He encontrado una clase que provee las funcionalidades básicas para crear un documento pdf sin necesidad de cualquier modulo adicional, como me había ocurrido antes. Esta clase ha sido creada por Wayne Munro, R&OS Ltda, en este enlace pueden hacer la descarga de la clase, se llama class.pdf

Además la idea de hacer este post, es para combinar un poco de Bases de Datos con esta funcionalidad, entonces aquí va el ejemplo básico de la generación del documento:

Código

require_once('clases/class.ezpdf.php');
$pdf =& new Cezpdf('a4');
$pdf->selectFont('fonts/Courier.afm');
$pdf->ezSetCmMargins(1,1,1.5,1.5);

$conexion = mysql_connect("localhost", "root", "");
mysql_select_db("personal", $conexion);
$queEmp = "SELECT nombre, correo, telefono FROM persona ORDER BY nombre ASC";
$resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
$totEmp = mysql_num_rows($resEmp);

$ixx = 0;
while($datatmp = mysql_fetch_assoc($resEmp)) {
	$ixx = $ixx+1;
	$data[] = array_merge($datatmp, array('num'=>$ixx));
}
$titles = array(
				'nombre'=>'<b>Nombres</b>',
				'correo'=>'<b>Correo</b>',
				'telefono'=>'<b>Telefono</b>'
			);
$options = array(
				'shadeCol'=>array(0.9,0.9,0.9),
				'xOrientation'=>'center',
				'width'=>500,
				'justification'=>'center'
			);
$txttit = "<b>Programacion Php, Java y C++</b>\n";
$txttit.= "Listado de Personal \n";

$pdf->ezImage("../Imagenes/logo.jpg", 0, 100, 'none', 'center');
$pdf->ezText($txttit, 12, $options, 0);
$pdf->ezTable($data, $titles, '', $options);
$pdf->ezText("\n\n\n", 10);
$pdf->ezText("<b>Fecha:</b> ".date("d/m/Y"), 10);
$pdf->ezText("<b>Hora:</b> ".date("H:i:s")."\n\n", 10);
$pdf->ezStream();

Entonces, la idea es incluir las clases que construyen el pdf con todas sus características, hacer la consulta en la base de datos, crear unos arreglos donde se incluyan los títulos y los campos que nos dan como resultado de la consulta y a continuación ponerlos en el pdf, como textos del mismo. Quizás lo único que hay para destacar es la forma en la que se ubica la imagen en el documento:

$pdf->ezImage("../Imagenes/logo.jpg", 0, 100, 'none', 'center');

Ya que se está haciendo el llamado de la imagen, se ubica en el centro del documento y con su tamaño al 100%. Y por supuesto la recomendación de siempre, ir a la Fuente :) Ahh bueno desde aquí pueden descargar el ejemplo: Descargar

Leave a Reply