En esta ocasión vamos a integrar la librería TCPDF con el framework KumbiaPHP.
Que es TCPDF?
TCPDF es una clase PHP libre, que tiene como finalidad generar archivos PDF a partir de informacion HTML.
Para conocer mas sobre sus caracterisitcas pueden ingresar a su web oficial http://www.tcpdf.org y para ver mas ejemplos pueden ingresar a http://www.tcpdf.org/examples.php
Comenzamos…
Lo primero que se debe hacer es descargar la libreria desde este link (versión actual). Una vez descargado debemos crear una carpeta llamada “tcpdf” dentro del directorio libs de nuestra aplicación ejemplo: “/app/libs”, y descomprimir allí el zip que descargamos.
Nota 1: si nuestro “core” de KumbiaPHP es compartido por varias aplicaciones, podemos situar esta carpeta en el directorio “/core/libs”.
Nota 2: cuanto tengamos la aplicacion en produccion podremos borrar los siguientes directorios de TCPDF:
- Cache
- Doc
- Examples
- CHANGELOG.TXT
- LICENSE.TXT
- README.TXT
- sRGB.icc
- tcpdf.fdf
- tcpdf.p12
Ahora, en el directorio “/app/libs/” creamos un archivo llamado “tcpdf.php” con el siguiente contenido:
<?php require_once APP_PATH . 'libs/tcpdf/tcpdf.php'; require_once APP_PATH . 'libs/tcpdf/config/lang/eng.php';
Nota 3: tambien pueden usar la ruta relativa eso ya es decision de cada cual. Ejemplo:
<?php require_once 'tcpdf/tcpdf.php'; require_once 'tcpdf/config/lang/eng.php';
Estas dos lineas son suficientes para poder utilizar TCPDF en cualquiera de las aplicaciones que compartan este “core”. El archivo “eng.php” se especifican algunas configuraciones como la codificacion del archivo a generar, entre otras.
La base de datos
Para este ejemplo utilizaremos solo una tabla llamada empleado.
El modelo
<?php
class Empleado extends ActiveRecord{
}
?>
El controller
<?php
class EmpleadosController extends AppController {
public function index() {}
public function imprimir()
{
View::template(NULL);
$modelo = Load::model('empleado');
$this->listaEmpleados = $modelo->find_all_by_sql("select * from empleado");
}
}
?>
Las vistas
index.phtml
<?php echo Html::linkAction('imprimir',"Imprimir"); ?>
imprimir.phtml
Esta vista, es la que contiene todo el codigo para la generacion del PDF, lo primero es cargar la libreria usando los archivos que creamos anteriormente:
Load::lib('tcpdf');
a continuación creamos una nueva instancia de TCPDF
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
setteamos alguna informacion de cabecera del archivo PDF
$pdf->SetCreator('TalesDigiTales');//Creador
$pdf->SetAuthor('D4ni3lR');//Autor
$pdf->SetTitle('TCPDF Ejemplo');//Titulo del archivo
$pdf->SetSubject('TCPDF Tutorial');//Asunto
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');//Palabras clve
Agregamos una pagina para el contenido
$pdf->AddPage();
Con esto estamos listos para agregar contenido a nuestro archivo PDF, para este ejemplo lo haremos de la siguiente manera:
$data = '<h1>Datos exportados</h1>'; //Variable que almacena los datos a exportar.
foreach ($listaEmpleados as $empl) {
$data = $data."Nombre: ".$empl->emp_nombre." Apellido: ".$empl->emp_apellido."<br/>";
}
Los datos a enviar al archivo PDF se deben crear de la siguiente manera:
$html = <<<EOD $data EOD;
Finalmente para escribir en los datos el PDF
$pdf->writeHTML($html, true, false, false, false, '');
y para generar el archivo PDF debemos llamar la siguiente linea:
$pdf->Output('example_048.pdf', 'I');
Entonces la vista imprimir.phtml quedaria asi:
<?php
//Cargo la liberia
Load::lib('tcpdf');
// creo un nuevo documento PDF
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// Informacion del documento
$pdf->SetCreator('TalesDigiTales');
$pdf->SetAuthor('D4ni3lR');
$pdf->SetTitle('TCPDF Ejemplo');
$pdf->SetSubject('TCPDF Tutorial');
$pdf->SetKeywords('TCPDF, PDF, example, test, guide');
// agregamos una pagina
$pdf->AddPage();
//datos
$data = '<h1>Datos exportados</h1>';
foreach ($listaEmpleados as $empl) {
$data = $data."Nombre: ".$empl->emp_nombre." Apellido: ".$empl->emp_apellido."<br/>";
}
//salida
$html = <<<EOD
$data
EOD;
$pdf->writeHTML($html, true, false, false, false, '');
//Close and output PDF document
$pdf->Output('example_048.pdf', 'I');
?>
Finalmente, en la url http://nuestro_server/app/empleados/ veremos un link llamado “Imprimir” el cual nos llevará directamente a la descarga del archivo PDF. La salida seria algo mas o menos asi:
El alcance de este ejemplo únicamente es mostrar como integrar la libreria TCPDF con el framework de KumbiaPHP, para generar reportes más complejos puedes basarte en la web de ejemplos de TCPDF.
Saludos y hasta la próxima ;)
Si te gustó… dejanoslo saber:
Nota final: actualizado gracias a alberto de http://abweb.com.ve/. saludos





Hola D4ni3lR
He seguido este completo tuto paso a paso y me aparece el siguiente error:
Parse error: syntax error, unexpected $end in /var/www/rilsoft/app/views/compras/pdf.phtml on line 36
//salida
$html = << linea 36
Podrías regalarme un poco mas de código de la vista?
El directorio “vendors” está deprecated en la beta 2. Los archivos deberían colocarse en la misma carpeta libs del default. Ya que no es necesario cambiar el core.
Ok, corregido muchas gracias.
Estaa Mui Chiimbiita La Pagiiinaa ……
:P
Pa Lante Como El Elefaaaanteeee
Gracias