En la gran mayoria de nuestras aplicaciones de PHP llegamos a el punto en donde tenemos que crear reportes , sobre todo ya que PHP es utilizado para aplicaciones de bases de datos son muy pocos los casos en donde no necesitaremos la creacion de reportes...
Hay muchas alternativas para la configuracion de reportes en varios casos la mas utilizada es la creacion de htm sencillo y la impresion desde el navegador.
La alternativa que intento plantearles en esta ocasion es utilizando una libreria de R&OS conocida como pdf-php.
La pagina oficial de este proyecto es
http://www.ros.co.nz/pdf/ , y para la fecha de creacion de este tutorial el link de descarga disponible es :
http://www.ros.co.nz/pdf/downloads.php?f=pdfClassesAndFonts_009e.zip
Lo extraeremos en una carpeta llamada pdf-php para este tutorial y posicionaremos la carpeta pdf-php en el interior de la carpeta que contiene nuestro script PHP.
En mi maquina se ve de la siguiente manera:
Aqui les dejo un sql para crear una tabla temporal de este ejemplo pueden usar el .sql o crear manualmente la tabla.
-- MySQL Administrator dump 1.4
--
-- ------------------------------------------------------
-- Server version 5.0.24a-community-nt
--
-- Create schema pdf_php
--
CREATE DATABASE IF NOT EXISTS pdf_php;
USE pdf_php;
--
-- Definition of table `pdf_php`.`usuario`
--
DROP TABLE IF EXISTS `pdf_php`.`usuario`;
CREATE TABLE `pdf_php`.`usuario` (
`id_usuario` int(5) NOT NULL,
`nombres_usuario` varchar(50) default NULL,
`apellidos_usuario` varchar(50) default NULL,
`direccion` varchar(50) default NULL,
`ciudad` varchar(50) default NULL,
`phone` varchar(8) default NULL,
PRIMARY KEY (`id_usuario`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Dumping data for table `pdf_php`.`usuario`
--
INSERT INTO `pdf_php`.`usuario` (`id_usuario`,`nombres_usuario`,`apellidos_usuario`,`direccion`,`ciudad`,`phone`) VALUES
(1,'rdogg','sv','svcommunity.org','san salvador','33334444');
La base de datos se llama pdf_php y la tabla se llama pdf_php
Crearemos un archivo llamado conexion.php
Contenidos de conexion.php
<?php
$hostName = "localhost";
$databaseName = "pdf-php";
$username = "usuario";
$password = "contrasenia";
function showerror()
{
die("Error " . mysql_errno() . " : " . mysql_error());
}
function mysqlclean($array, $index, $maxlength, $connection)
{
if (isset($array["{$index}"]))
{
$input = substr($array["{$index}"], 0, $maxlength);
$input = mysql_real_escape_string($input, $connection);
return ($input);
}
return NULL;
}
function shellclean($array, $index, $maxlength)
{
if (isset($array["{$index}"]))
{
$input = substr($array["{$index}"], 0, $maxlength);
$input = EscapeShellArg($input);
return ($input);
}
return NULL;
}
?>
Contenido del archivo index.php que crea el pdf
<?php
require "./pdf-php/class.ezpdf.php";
require "conexion.php";
$query = "SELECT * FROM usuario WHERE id_usuario = 1";
if (!($connection = @mysql_connect($hostName, $username, $password))){
die("Could not connect to database");
}
if (!(mysql_selectdb($databaseName, $connection)))
showerror( );
if (!($result = @ mysql_query($query, $connection)))
showerror( );
$row = mysql_fetch_array($result);
// Creamos el nombre y el apellido
$name = "{$row["nombres_usuario"]} {$row["apellidos_usuario"]}";
// Creamnos un nuevo documento PDF
$doc =& new Cezpdf( );
// Usaremos la letra incluida en el paquete llamada Helvetica
$doc->selectFont('./pdf-php/fonts/Helvetica.afm');
// Creamos un encabezado
$doc->ezText("<u>Detalles de usuario para {$name}</u>",
14, array("justification"=>"left"));
// Creamos un espacio para separar
$doc->ezSetDy(-15);
// Hacemos un arreglo con la informacion del usuario
$table = array(
array("Campo"=>"Nombre",
"Valor"=>$name),
array("Campo"=>"Direccion",
"Valor"=>"{$row["direccion"]} {$row["ciudad"]} "),
array("Campo"=>"Pais",
"Valor"=>"El Salvador"),
array("Campo"=>"Telefono",
"Valor"=>$row["phone"]));
$doc->ezTable($table);
// Procesar el Documento
$doc->ezStream( );
?>
Obtenemos lo siguiente al ejecutarlo:
Espero les sea de utilidad es un documento basico y el readme con el que viene el pdf-php trae otros ejemplos y se pueden crear pdfs muy avanzados con esta herramienta, con imagenes y muchas cosas mas...