03 diciembre 2009

Generar pdf con la ayuda de ezpdf en codeigniter



La generacion de pdf en codeigniter es una de las tareas mas habituales en el desarrollo de un sitio web o sistema ya sea para generar reportes o cualquier otro tipo de informacion para ello primero se debe descargar ezpdf ya descargado el archivo y descomprimido procedemos a mover los siguientes archivos (class.ezpdf.php, class.pdf.php y la carpeta fonts) a application/libraries/ el siguiente paso es remombrar el archivo class.ezpdf.php por el de cezpdf.php, ya hecho esta operacion lo editamos y cambiamos la linea:

include_once('class.pdf.php');

por

include_once(APPPATH . 'libraries/class.pdf.php');

Ahora creamos un helper, este helper nos ayudara a definir de una el formato de hoja los margenes y el pie de cada pagina el nombre del archivo es el siguiente pdf_helper.php, claro cabe mencionar que debe ser almacenado el archivo en la carpeta helpers, dentro colocamos el siguiente codigo:

<?php
if(!defined('BASEPATH'))exit('No direct script access allowed');

/*helper funcion ayuda a definir los margenes tipografía y creación del footer y números de pagína*/
function prep_pdf($orientation = 'portrait'){
$CI =& get_instance();
$CI->cezpdf->selectFont(APPPATH.'libraries/fonts/Helvetica.afm');

$all = $CI->cezpdf->openObject();
$CI->cezpdf->saveState();
$CI->cezpdf->setStrokeColor(0,0,0,1);
if($orientation == 'portrait') {
$CI->cezpdf->ezSetMargins(20,70,20,20);
$CI->cezpdf->ezStartPageNumbers(570,28,8,'','{PAGENUM}',1);
$CI->cezpdf->line(20,40,578,40);
$CI->cezpdf->addText(25,32,8,'Impreso ' . date('m/d/Y h:i:s a'));
}
else {
$CI->cezpdf->ezStartPageNumbers(750,28,8,'','{PAGENUM}',1);
$CI->cezpdf->line(20,40,800,40);
$CI->cezpdf->addText(25,32,8,'Impreso '.date('m/d/Y h:i:s a'));
}
$CI->cezpdf->restoreState();
$CI->cezpdf->closeObject();
$CI->cezpdf->addObject($all,'all');
}
?>

solo resta hacer una prueba en el controlador para generar el pdf aqui el codigo a colocar en el controlador:




<?php
public function genera_pdf(){
/*load library cezpdf*/
$this->load->library('cezpdf');
$this->load->helper('pdf_helper');
prep_pdf();
$this->cezpdf->ezText('<b>Cliente No.:</b> 12');
$this->cezpdf->ezText('<b>Cliente:</b> Abraham Zenteno Sanchez');
$this->cezpdf->ezText('<b>Tienda:</b> Plaza Dorada');
$this->cezpdf->ezText('<b>Fecha y hora de impresion:</b> '.date('Y-m-d').', '.date('H:i').' hrs.');
$this->cezpdf->ezText('');
$db_data[] = array('eye' => 'O.D.','ESF' => '+9.75','CIL' => '-1.25','EJE' => '3','ADD' => '+2.50','REF' => 'D.I. 4 mm');
$db_data[] = array('eye' => 'O.I.','ESF' => '+9.20','CIL' => '-1.00','EJE' => '3','ADD' => '+4.50','REF' => 'D.I. 3 mm');

$col_names = array(
'eye' => '',
'ESF' => 'ESF.',
'CIL' => 'CIL.',
'EJE' => 'EJE',
'ADD' => 'ADD',
'REF' => ''
);

$this->cezpdf->ezTable($db_data, $col_names, 'Graduacion registrada el 3 de Diciembre del 2009', array('width'=>550));

$this->cezpdf->ezStream(array('Content-Disposition'=>'nama_file.pdf'));

}
?>
acedemos http://domain/index.php/controller/genera_pdf, esto para que verificar que se han cumpido todos los pasos en este minu tuto espero haya sido de ayuda, y recuerda comentar no cuesta nada saludos.

4 comentarios:

Daniel Torres dijo...

hola que tal segui tus pasos y me salio este error

A PHP Error was encountered

Severity: Warning

Message: include_once(libraries/class.pdf.php) [function.include-once]: failed to open stream: No such file or directory

Filename: libraries/cezpdf.php

Line Number: 3
A PHP Error was encountered

Severity: Warning

Message: include_once() [function.include]: Failed opening 'libraries/class.pdf.php' for inclusion (include_path='.:/usr/lib/php/:/usr/share/pear/')

Filename: libraries/cezpdf.php

Line Number: 3

saber por que puede ser o algo hice mal

Daniel Torres dijo...

ya encontre el error jejeje escribi mal el include_once(APPPATH .'libraries/class.pdf.php');

me falto el APPPATH

JEJEJE

ya quedo gracias por tu aporte con este tutorial me fue de gran ayuda

Ronald Blanco dijo...

Hola... mil gracias por el pequeño tutorial.. lo estoy aplicando para los reportes de un sistema q estoy haciendo.
Pero no puedo hacer q aparesca una imagen (el logo de la institución) en los pdfs.. no se si hago algo mal, t paso el segmento de código para q me ayudes, desde ya muchas gracias!!
$this->cezpdf->addPngFromFile($ruta."/logo_alcos.png",50,50,400,100);

Enrique dijo...

hola me gustaria me ayudara
estuve realizando lo mismo

pero al momento de escribir la direccion me salio error.

mi direccion es

http://localhost:81/codeprincipal1/index.php/controller/genera_pdf

404 Page Not Found
The page you requested was not found.

ya llevo 3 dias y no avanzo

Excel 2013, convertir mes en texto a numero

Si tienes un mes en formato ENERO este lo cambiara a 02, funciona en la versión de Excel 2013, solo se tienen que reemplazar J2 por la celda...