Generar reportes PDF con PHP usando la librería ezPDF

Este artículo es para aquellos desarrolladores PHP que quieren además de generar un reporte en html crear dinámicamente documentos PDF con PHP. Hoy por hoy existen diversas librerías que están disponibles para este objetivo, sin embargo el uso del ezPDF es de lo mas sencillo, solo se necesita incluir una librería a nuestro script y hacer uso de la clase ezPDF para crear nuestro archivo PDF.

Para nuestro ejemplo vamos a crear una primera función en la cual almacenaremos todos los valores en un array que luego lo pasaremos a otra función la cual se encargará de imprimir el documento PDF.

function reporte(){

// realizamos una consulta rapidamente – ojo : se está obviando la conexión puesto que no es el objetivo de este post

$sql = “select s.name,s.apellido,s.fecha from tabla_1 t inner join tabla_2 s on t.site_id = s.id where t.id = $variable;
$rs  = mysql_query($sql)or die(“Could not able site”);
$row = mysql_fetch_object($rs);

// llamamos al archivo donde se va a crear la segunda funcion

require_once(‘imprime.php’);

// inicializamos el objeto pdf

$this->pdf = new imprime();

// los resultados del query los colocamos dentro de un array

$data_info = array(‘name’   => $row->name,
‘apellido’ => $row->apellido,
‘fecha’ => $row->fecha
);

// llamamos a la segunda funcion y le pasamos el parametro – ojo :se puede pasar mas de un parametro separado por comas

$this->pdf->imprime($data_info);

}

// aqui la segunda funcion, la cual se encarga de diseñar el documento, recoge los parametros

function imprime($data_info){

// nuevo documento pdf – ojo: dentro del parentesis pueden colocar el tipo de hoja como A4, A3, etc

$pdf= new Cezpdf();

// utilizamos la fuente Helvetica.afm

$pdf->selectFont(‘fonts/Helvetica.afm’);

// margenes de la hoja

$pdf->ezSetMargins(30, 30, 50, 30);
$pdf->ezSetY(810);
$pdf->ezText(‘<b>Titulo Principal</b>’,14,array(‘justification’=>’left’));

// aqui colocamos una imagen que va a actuar como fondo de la hoja – ojo: esta librería solo acepta extensiones jpg y png

$img = ImageCreatefromjpeg(PUBLIC_IMAGES.’imagen.jpg’);
$pdf-> addImage($img,120,300,400,400);

// insertamos una linea para comenzar con el contenido

$pdf->line(50,790,550,790);
$pdf->ezSetY(780);

// ingresamos los datos que hemos obtenido del array – ojo: se usa $nombre_variable[‘indices’]

$pdf->ezText(‘/’.’‘.$data_info[‘name’].’‘.’ con ‘.’‘.$data_info[‘apellido’].’‘.’ en la fecha’.’‘.$data_info[‘fecha’].’ ‘.’de ejemplo’,12,array(‘justification’=>’left’));
$pdf->ezSetY(50);

// insertamos para nuestro ejemplo la fecha actual del sistema y un pie alineado a la izquierda

$pdf->ezText(‘(c)’.date(‘Y’).’Pie Principal’,12,array(‘justification’=>’left’));
$pdf->ezSetY(50);
$pdf->ezText(date(‘j/n/Y g:i’),12,array(‘justification’=>’center’));
$pdf->ezStream();

}

Espero que con este artículo les haya ayudado un poco, el link para descargar la librería es ezPDF.

Nota: Para mi próximo artículo voy a combinar esta librería con PChart, cuyo producto final me origina un documento PDF mas un grafico estadístico.

Comments

Hola

Estoy intentando construir un report en pdf desde una base de datos mysql, pero no logro sacar resultados.

Me gustaría probar tu ejemplo, y por eso me gustaría que publicaras el script completo (desde y también el script completo que llamas imprime.php

Muchas gracias

Buenas tarde mi problema, es el siguiente:

Necesito genera un archivo pdf con 4 paginas o mas
la cuales tendran exactamente la misma informacion,
sin enmbargo al final de cada pagina llevaran una leyenda como: “Original” “Cliente” “Archivo” o algo parecido.

Ya genero el pdf,con la informacion necesaria, pero es solo una pagina, lo que no se, es como hacerle para que se generan 4 paginas o mas con la misma informacion.

De antemamo, gracias.

Hola Fran y hola Ocelo gracias por leer mi post y sobretodo por interesarse.

Disculpen por no haber contestado sus comentarios antes, pero más vale tarde que nunca y aqui les paso un link propio de mi servidor con los scripts que me pidieron.

http://www.innovandote.com/download/reporte.zip

Nota: Ocelo, en ese zip tambien se encuentra la solucion a tu problema.

Hola.

Estoy usando tu ejemplo, que me parece maravilloso.. pero quiero hacerle algunos cambios y no se como. A ver si me puedes ayudar.

Tengo un formulario de Datos Personales, lo que necesito es que los datos que traigo de la base de datos me muestren unos debajo del otro y no como se muestra en la tabla, cada dato en una columna. Quiero que el documento se vea mas a un curriculum.

Desde ya gracias.

Hola Carolina, lo único que tienes que variar es el formato del array que mandas y en la función imprime_pdf(), muestras los datos según tus requerimientos.

Para que te guíes aqui está el link; es el mismo ejemplo anterior solo he modificado el fichero report.php.

http://www.innovandote.com/download/reporte_valores.zip

Espero que este ejemplo te sirva de ayuda.

que onda leyendo en tu post me agradaría saber si puedo jalar solo algunos datos y comlocarlos en un formato ya hecho por mi en pdf, osea solo introducir los datos requeridos pero en un formato ya hecho? se me pexplico? espero me puedas ayudar te lo agardecería mucho porque me urge.

de antemano gracias!!!

hola, estoy cuadrando unos formatos, pero no se como hacer que un header me salga en todas las paginas, logre poner el numero de pagina y la fecha en todos los pies, pero la cabecera solo me sale en la primera pagina, aca pongo el codigo…

function imprime_pdf(){

$data = $this->genera_pdf();
require_once(‘class.ezpdf.php’);
$pdf= new Cezpdf(‘LETTER’,’landscape’);
$pdf->selectFont(‘php_Helvetica.afm’);
$pdf->ezSetMargins(20, 50, 20, 20);
$pdf->ezStartPageNumbers(440,30,9,’right’,date(‘d/m/Y g:i a’).’ – Página {PAGENUM} de {TOTALPAGENUM}’);

for($i = 1; $i 1){
$pdf->ezNewPage();
}

$pdf->ezImage(‘logo.JPG’,0,100,1,’left’,”);
$pdf->ezSetY(780);
$pdf->ezText(‘..::Titulo Header::..‘,14,array(‘justification’=>’center’));

$pdf->line(20,720,590,720);

$pdf->ezSetY(720);
$pdf->ezTable($data,”,
‘Titulo Tabla’,
array(‘showHeadings’=>1,
‘shaded’=>0,
‘showLines’=>2,
‘width’=>570,
‘xPos’ =>310,
‘maxWidth’=>600,
‘shadeCol’ =>array(0.9,0.9,0.9),
‘titleFontSize’ =>11));

$pdf->line(20,30,590,30);

}

esta es la solucion…..

$all = $pdf->openObject();
$pdf->saveState();

$pdf->ezSetY(765);
$pdf->ezImage(‘logo.JPG’,1,100,1,’left’,”);
$pdf->ezSetY(780);
$pdf->ezText(‘..::Titulo Header::..‘,14,array(‘justification’=>’center’));
$pdf->line( 20, 40, 590, 40 );
$pdf->line( 20, 720, 590, 720 );
$pdf->addText( 20, 30, 8, date(‘d/m/Y g:i a’) );
$pdf->ezSetY(720);

$pdf->restoreState();
$pdf->closeObject();
$pdf->addObject( $all, ‘all’ );

Hola queria solicitarte una ayuda. de una consulta deseo colocar algunos campos en el encabezado por ejemplo que despues del titulo aparezcan por ejemplo el nombre de un usuario o de una referencia solicitada en el select muchas gracias

Disculpen a todos por no haber contestado sus dudas mas antes, bueno julian si quieres colocar por ejemplo un login, entonces solo tienes que mandar en la funcion (voy a utilizar la funcion que escribi al principio del post):

$login = /* resultado de la consulta de BD */
$this->pdf->imprime($data_info,$login);

y en la funcion que se encarga de imprimir el pdf:

$pdf->ezText(‘Titulo_Headernn’,12,array(‘justification’=>’center’));

$pdf->ezText($login,12,array(‘justification’=>’center’));

Espero que te haya ayudado …

hola, tengo una duda muy grande, ojala puedan ayudarme, es que no se como ponerle a cada hoja del pdf el encabezado y el pie =S, en ambos tengo imagenes algun ejemplo que puedan proporcionarme? se los agradeceria mucho

te agradeceria si me pudieras colaborar .. es la misma pregunta, ahi te copio todo el codigo aunque el select es un poco largo funcina perfectamente

conexion();

/* realizo la consulta respectiva (en el blog te puse un ejemplo con inner join)
* quizas tengas problemas con las consultas, primero revisalas en en phpmyadmin si es que
* te devuelve resultados…
*/
$cadena = “select registro.ano, registro.periodo, usuarios.codfacultad, facultad.nomfacultad as nf, registro.codmateria, materia.nommateria as nm, materia.identificadoc, docente.nombredoc as nd, registro.codtema, tema.nombretema, registro.coditem, items.nombreitem,
count(case califica when 1 then 1 else null end) as c1,
count(case califica when 2 then 2 else null end) as c2,
count(case califica when 3 then 3 else null end) as c3,
count(case califica when 4 then 4 else null end) as c4,
count(case califica when 5 then 5 else null end) as c5,
sum(case califica when 1 then 1 else 0 end) as c11,
sum(case califica when 2 then 2 else 0 end) as c21,
sum(case califica when 3 then 3 else 0 end) as c31,
sum(case califica when 4 then 4 else 0 end) as c41,
sum(case califica when 5 then 5 else 0 end) as c51,
(count(case califica when 1 then 1 else null end)+count(case califica when 2 then 2 else null end)+count(case califica when 3 then 3 else null end)+count(case califica when 4 then 4 else null end)+count(case califica when 5 then 5 else null end))as sc,

(sum(case califica when 1 then 1 else 0 end)+sum(case califica when 2 then 2 else 0 end)+sum(case califica when 3 then 3 else 0 end)+sum(case califica when 4 then 4 else 0 end)+sum(case califica when 5 then 5 else 0 end))as cuentacal,

round((case when ((count(case califica when 1 then 1 else null end)+count(case califica when 2 then 2 else null end)+count(case califica when 3 then 3 else null end)+count(case califica when 4 then 4 else null end)+count(case califica when 5 then 5 else null end))>0) then (((sum(case califica when 1 then 1 else 0 end))+(sum(case califica when 2 then 2 else 0 end))+(sum(case califica when 3 then 3 else 0 end))+(sum(case califica when 4 then 4 else 0 end))+(sum(case califica when 5 then 5 else 0 end)))/ (count(case califica when 1 then 1 else null end)+count(case califica when 2 then 2 else null end)+count(case califica when 3 then 3 else null end)+count(case califica when 4 then 4 else null end)+count(case califica when 5 then 5 else null end))) else 0 end),1) as prom

from (area inner join docente on area.codarea = docente.codarea) inner join ((facultad inner join usuarios on facultad.codfacultad = usuarios.codfacultad) inner join (tema inner join (items inner join (materia inner join registro on (materia.codmateria = registro.codmateria) and (materia.identificadoc = registro.identificadoc)) on (items.codtema = registro.codtema) and (items.coditem = registro.coditem)) on tema.codtema = items.codtema) on usuarios.identificacion = registro.identificacion) on docente.identificadoc = materia.identificadoc where registro.identificadoc = 65760693
group by registro.ano, registro.periodo, usuarios.codfacultad, facultad.nomfacultad, docente.codarea, registro.codmateria, materia.nommateria, materia.identificadoc, docente.nombredoc, registro.codtema, tema.nombretema, registro.coditem, items.nombreitem
having ((case when ((count(case califica when 1 then 1 else null end)+count(case califica when 2 then 2 else null end)+count(case califica when 3 then 3 else null end)+count(case califica when 4 then 4 else null end)+count(case califica when 5 then 5 else null end))>0) then (((sum(case califica when 1 then 1 else 0 end))+(sum(case califica when 2 then 2 else 0 end))+(sum(case califica when 3 then 3 else 0 end))+(sum(case califica when 4 then 4 else 0 end))+(sum(case califica when 5 then 5 else 0 end)))/ (count(case califica when 1 then 1 else null end)+count(case califica when 2 then 2 else null end)+count(case califica when 3 then 3 else null end)+count(case califica when 4 then 4 else null end)+count(case califica when 5 then 5 else null end))) else 0 end)>0)
order by usuarios.codfacultad, materia.nommateria, registro.codtema, registro.coditem”;
$resultado = mysql_query($cadena);

// realizo el recorrido de los registros
while($campo =mysql_fetch_object($resultado)){

// los resultados los meto en un array para mandarlos al PDF
$this->valores[] = array(‘nombreitem’ => $campo -> nombreitem,
‘c1’ => $campo -> c1,
‘c2’ => $campo -> c2,
‘c3’ => $campo -> c3,
‘c4’ => $campo -> c4,
‘c5’ => $campo -> c5);

}

return $this->valores;
}

function imprime_pdf(){

$data = $this->genera_pdf(); // recojo los valores de la funcion genera_pdf
require_once(‘class.ezpdf.php’); // incluyo la clase ezpdf
$pdf= new Cezpdf();
$pdf->selectFont(‘fonts/Helvetica.afm’);
$pdf->ezSetMargins(30, 30, 50, 30);
$pdf->ezSetY(810);
$pdf->ezText(‘Evaluacion Docente‘,14,array(‘justification’=>’left’));

/* requiero que en esta posicion pueda mostrar los campos nd, nm, nf de la consulta de mysql */
gracias

$pdf->line(50,790,550,790);

/* hola Ocelo aqui esta solucionado tu problema (imprimir los mismos datos en mas de una pagina)
solo tienes que cambiar el valor de 4 por el que quieras o pasarle una variable …
**/
$pdf->ezSetY(780);
for($i = 1; $i 1){
$pdf->ezNewPage();
}
$pdf->ezTable($data,”,”,array(‘showHeadings’=>1,’shaded’=>0,’showLines’=>1,’width’=>500));
}
// …..

$pdf->ezSetY(50);
$pdf->ezText(‘(c)’.date(‘Y’).’Evaluacion’,12,array(‘justification’=>’left’));
$pdf->ezSetY(50);
$pdf->ezText(date(‘j/n/Y g:i’),12,array(‘justification’=>’center’));
$pdf->ezStream();
}
}
$var = new PDF;
$var->imprime_pdf(); // devuelve el documento pdf
?>

hola, de ante mano gracias por la ayuda que nos brindas mira el problema que tengo es el siguiente quisiera mostrar 2 tablas una que muestre los datos como el ejemplo de reportes que espusiste mas arriba en el se muestran los datos de forma horizontal y luego mostrar otros datos de la consulta de forma vertical como el de reporte_valores es para generar una factura por ejemplo mostrar cliente direccion telefono de forma horizontal y cantidad descripcion valor unitario total de forma vertical asi mismo que al cambiar la fecha me muestre un salto de pagina con los siguientes datos y tablas te agradeceria si me pudieces ayudar gracias y estare al pendiente de tu consulta

por cierto no creas que soy perezosa estuve tratando de combinar los archivos pero la verdad o me muestra uno o me muestra el otro pero no ambos cuando me muestra lo datos del cliente me muestra mas abajo una tabla que dice 0 1 2 3 y abajo array array array array no se cual sera el error bueno no te molesto mas y gracias por la ayuda que puedas brindarme

Buenas tardes,

Tengo un problema con el encabezado y pie de pagina al momento de generar reporte en pdf con la libreria class.ezpdf.php…!!! le anexe esta función a class.ezpdf.php; que se especifica a continuacion:

function make_pdf($header, $message, $footer)
{
$pdf =& new Cezpdf( ‘a4’, ‘P’ );
$pdf -> ezSetCmMargins( 2, 1.5, 1, 1);
$pdf->selectFont( ‘Helvetica.afm’ );

$all = $pdf->openObject();
$pdf->saveState();
$pdf->setStrokeColor( 0, 0, 0, 1 );

$pdf->line( 10, 40, 578, 40 );
$pdf->line( 10, 822, 578, 822 );
$pdf->addText( 250, 34, 6, $footer );

$pdf->restoreState();
$pdf->closeObject();
$pdf->addObject( $all, ‘all’ );
$pdf->ezSetDy( 30 );

$pdf->ezText( $header, 14 );

$pdf->ezText( “nn” . $message, 10 );
$pdf->ezStream();
exit;
}

con el objetivo de ver si puedo trabajar con encabezado y pie de pagina… bueno me corrio perfecto pero no encuentro la manera de insertarle imagen al pie de pagina.. habra alguna manera de que me tome la imagen..?

Gracias muy buen aporte te agradezco mucho, solo tengo una sola pregunta si sabes como se soluciona lo de los acentos en el pdf ya que los coloca con letras basura gracias

Hola Kraxbox particularmente a mi los acentos me salen normales … los textos que imprimes (los que llevan acentos) son traidos de base de datos o son textos propios del PDF ???

Hola, yo tengo el siguiente problema… Como puedo hacer para q a la hora de descargar el archivo .pdf no me ponga como nombre por defecto file.pdf??? kiero darle yo un nombre. No se si me explico… Gracias de antemano

Hola Marcos, la solucion de ywarnier es muy buena, también puedes hacer un pequeño cambio en la clase class.pdf.php en la línea 1918:

$fileName = (isset($options[‘Content-Disposition’])?$options[‘Content-Disposition’]:’file.pdf’);

cambiar ‘file.pdf’ por el nombre que le quieres dar.

Hola darkvela, tengo un problema como el de Ocelo, pero mis datos son la continuacion, osea mi array tiene por ejemplo 100 registros(no se cuantos puede salir en la consulta, pueden ser menos o mas) y me arroja solo una pagina, que sea lo mas eficiente y rapido. gracias.
este es mi codigo:

function generarReporte2($pdatos,$ptitulo){
include (‘../clases/class.ezpdf.php’);

$pdf = & new Cezpdf(‘LETTER’);
$pdf->selectFont(‘./font/Helvetica.afm’);
$pdf->ezStartPageNumbers(80,720,8);
$pdf->ezSetMargins(30, 30, 50, 30);
$pdf->ezStartPageNumbers(500,18,10,”,'{PAGENUM} de {TOTALPAGENUM}’,1);

$pdf->addJpegFromFile(“../pruebas/ricuras.jpg”,50,685,80,80);
$pdf->addText(225,680,12,$ptitulo);
$title = ‘RESTAURANTE FAMILIAR’;
$pdf->addText(125,735,11,$title);
$pdf->addText(150,725,11,”Hermanos Araque”);
$pdf->addText(160,715,8,”Nit.50848404-4″);
$pdf->addText(155,705,7,”IVA Regimen Comun”);

$pdf->addText(35,640,11,”Fecha: “.date(“d/m/Y”).” “.date(“H:i:s”));

$pdf->setLineStyle(1);
$pdf->line(600,620,10,620);
$pdf->line(600,600,10,600);
$pdf->addText(15,609,10,”No.Factura”);
$pdf->addText(90,609,10,”Fecha”);
$pdf->addText(130,609,10,”Cliente”);
$pdf->addText(305,609,10,”Domicilio”);
$pdf->addText(370,609,10,”Descuento”);
$pdf->addText(445,609,10,”IVA”);
$pdf->addText(520,609,10,”Total”);

$x=15;
$y=580;
for ($i=0; $i addText(15,$y,10,$pdatos[$i][‘vnumero’]);
$pdf->addText(80,$y,10,$pdatos[$i][‘vfecha’]);
$pdf->addText(135,$y,10,$pdatos[$i][‘pnombre’]);
$pdf->addText(310,$y,10,number_format($pdatos[$i][‘vdomicilio’]));
$pre=trim(number_format($pdatos[$i][‘vdescuento’]));
$n2=strlen($pre)*4;
$r=380-$n2;
$pdf->addText($z2+$r,$y,10,$pre);

$pre=trim(number_format($pdatos[$i][‘viva’]));
$n2=strlen($pre)*4;
$r=450-$n2;
$pdf->addText($z2+$r,$y,10,$pre);

$pre=trim(number_format($pdatos[$i][‘vtotalpag’]));
$n2=strlen($pre)*4;
$r=530-$n2;
$pdf->addText($z2+$r,$y,10,$pre);

$t=$t+$pdatos[$i][‘vtotalpag’];
$y=$y-10;

}

$pdf->line(600,$y,10,$y);
$y=$y-15;
$pdf->addText(405,$y,11,”Total Vendido”);
$pdf->addText(510,$y,11,number_format($t));
$pdf->ezStream();

}

Bueno lo de la eficiencia, es relativo pero te recomiendo que no sobrecargues a mysql; es decir dale un poco de trabajo tambien a apache jeje, al final usas un array (no hay problema), por eso se crearon, mmm pero si quieres hacer la consulta más rápida te aconsejo que crees índices asi optimizaras tu BD.

Bueno depronto, no me explique bien. como el ejemplo http://www.innovandote.com/download/reporte.zip pero con la diferencia que no requiero repetir valores, solo que se continue mostrando los valores que siguen, digamos que tengo un arreglo de 100 registros, necesito que se muestre en varias hojas continuamente hasta el ultimo. gracias

HOLA Darkvela, q tal sabes quisiera que me orientes con reportes me estoy guiando de tus ejms pero toy trabajando con el patron de diseño mvc y no se porque no conecta bd y no muestra las tablas pues me sale en blanco el pdf cuando lo exporto, mi conexion esta en el mypdo.php hago una clase donde pongo Constructor
function __construct() {
try {
$parm = parse_ini_file(“../conf/connect.ini”);
$url = $parm[“01”];
$user = $parm[“02”];
$pass = $parm[“03”];
parent::__construct($url,$user,$pass);
no se como ya conectar a bd pa usar la libreria class.ezpdf.php como tu hiciste, gracias espero me puedas ayudar,:)

Hola a todos, agradesco a toda las personas que dejan sus comentarios y se interesan por mi post, pues bien mmmm adair no entiendo bien tu pregunta, podrias explicarme mejor lo que quieres que te devuelva, y hola karito, primero muy bien que estes usando el patrón MVC yo tambien lo uso, solo para este ejemplo lo hice estructuradamente, respondiendo a tu pregunta me dices que tu pdf te imprime … pero vació, primero debes chec ar tu conexionsi el array te devuelve datos haciendo un var_dump($variable_contendedor_datos), pero pienso que el problema no es tu BD, otra prueba es mandando datos a mano, o sea, por ejemplo manda solo el titulo(cabecera):
$pdf->ezText(’Prueba si sale’,14,array(’justification’=>’left’));
y visualiza si se esta imprimiendo el texto …. si no aparece,a mi parecer pienso que el problemas es que no estas mandando bien la ruta de los FONTS:
$pdf->selectFont(’fonts/Helvetica.afm’); (nota: pasale siempre la ruta verdadera de tu server) y me escribes como te fue, gracias..
Por siacaso dejo mi correo: darkvela_110@yahoo.es

Hola Darkvela sabes quiero en un solo campo mostrar los Apellidos y Nombres hice mi $cadena = “select p.pe_cod as Nro,concat(p.pe_paterno , ” “, p.pe_matermo, ” “, p.pe_nombre) as ‘Apellidos y Nombres’
from persona”;
$resultado = mysql_query($cadena);
$this->valores[] = array(‘COD.’ => $campo -> PE_COD
………………………………..
);
los meto al array para mandarlos al PDF pero nose bien usar el array creo o no me esta leyendo el concat nose si puedes ayudarme please 🙂

Bueno primero te recomiendo que no concatenes directamente dentro del query; devuelve los campos uno por uno, no te digo que esta mal pero para este caso no es necesario hacerlo asi; seria algo parecido como esto:

$cadena = “select p.pe_cod as Nro, p.pe_paterno as Apellido_pat, p.pe_paterno as Apellido_mat, p.pe_nombre as Nombres from persona”;

$resultado = mysql_query($cadena);

Luego en el array haces la logica de concatenación, ademas esto es mas rapido que concatenar directamente en la consulta. Quedaría algo así:
Me imagino que $campo es un = “mysql_fetch_object()” … ?

$this->valores[] = array(‘cod’ => $campo->Nro,
‘persona’ =>
$campo->Apellido_pat.’ ‘.$campo->Apellido_mat.’ , ‘. $campo->Nombres);

Y eso es todo al recoger imprimes:
echo $this->valores[‘persona’];

Espero haberte ayudado, bye y suerte.

Hola darkvela, queria preguntarte de como llamar a otra formulario desde un boton y la otra es que tengo n listview con 4 campos y deseo ke al seleccionar la fila le haga click en editar y me capture los datos de esa fila….espero tu rspta.muchas gracias..!!!

HOLA QUE TAL! Darkvela quiero que me orientes como puedo reducir la letra dentro de tablas como el ejemplo anterior que hiciste solo puedo reducir en cabeceras o pie de pagina y no en tabla como viene a jalar delas misma bd nose donde poner el tipo letra y tamaño ah y tambien el conpaginado de toda la lista ke muestra array en el reporte please DArkvEla Help me!:)

Hola, quisiera aportar otra solución al problema que tenía Marcos. La línea que dice Darkvela dice:
$fileName = (isset($options[‘Content-Disposition’])?$options[‘Content-Disposition’]:’file.pdf’);
Entonces se puede mandar el nombre como parámetro a la función stream así:
$options[‘Content-Disposition’]=’nombreArchivo.pdf’;
$pdf->stream($options);
Para que no se tenga que definir un nombre estático.

Tengo una pregunta, la librería sirve para hacer tablas que tengan colspan y rowspan diferentes? Algo como
| |
Columna 1 |______Columna 2_________|
| Col 2.1 | Col 2.2 |
___________________|____________|___________|
Datos col 1 |Datos 2.1 | Datos 2.2 |

Saludos