6 de abril de 2010

Generar PDFs en un proyecto usando symfony

Muchos de los desarrollos que realizamos diariamente requieren la generación de informes en formato PDF. Hoy me han pedido en el trabajo que busque información sobre como generar ficheros PDF en proyectos que usan symfony, trás Googlear un poco, estas son algunas alternativas que podemos utilizar:

sfPDFLatextPlugin



Este plugin permite utilizar la potencia de LaTex (http://www.latex-project.org/) para generar ficheros PDF.

- Licencia MIT
- Estado BETA
- Web http://symfony.ibr-oss.de/article/sfpdflatexplugin/


sfTCPDFPlugin



Este plugin proporciona la abstracción de la librería TCPDF. El interés principal de este "fork" de FPDF reside en el hecho de que puede manejar cualquier cadena UTF8 con la codificación nativa de symfony.

Un ejemplo de su uso se puede ver en la siguiente URL http://symfonynerds.com/blog/?p=158

- Licencia MIT
- Estado STABLE
- web http://www.symfony-project.org/plugins/sfTCPDFPlugin

sfDomPDFPlugin



El plugin sfDomPDFPlugin permite convertir HTML en PDF. El plugin utiliza la librería DomPDF. Es muy útil para la conversión de cosas como facturas y documentos personalizados en formato PDF no editable.

Hay que tener en cuenta que DomPDF soporta CSS 2.1, sin embargo, es muy exigente con el formato, por lo hay que evitar el uso de abreviaturas de estilos o combinación de estilos.

Para conocer la compatibilidad con CSS 2.1 consulta la siguiente URL http://www.digitaljunkies.ca/dompdf/css21.php

- Licencia LGPL
- Estado STABLE
- Web http://www.symfony-project.org/plugins/sfDomPDFPlugin

Usar Zend PDF para generar ficheros PDF



Siguiendo con la filosofía de symfony, "No reinventar la rueda" podemos hacer uso de esta parte del Zend Framework.

Para poder usar esta librería del Zend Framework, tienes que añadir en el directorio lib/vendor/Zend/ los siguientes ficheros y directorios:

* Exception.php
* Loader/
* Loader.php
* Pdf/

Una vez hecho esto, deberás añadir el código siguiente a la clase ProjectConfiguration para proporcionar una manera simple de registrar el Zend autoloader.


// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
static protected $zendLoaded = false;

static public function registerZend()
{
if (self::$zendLoaded)
{
return;
}

set_include_path(sfConfig::get('sf_lib_dir').'/vendor'.PATH_SEPARATOR.get_include_path());
require_once sfConfig::get('sf_lib_dir').'/vendor/Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
self::$zendLoaded = true;
}

// ...
}


Una vez tengamos cargado el autoloader de Zend podremos invocar a las clases para generar ficheros PDF.

Un ejemplo del uso de Zend PDF lo puedes encontrar en la siguiente URL http://framework.zend.com/manual/en/zend.pdf.usage.html

- Licencia New BSD License
- Estado STABLE
- Web http://framework.zend.com/manual/en/zend.pdf.html

1 comentario: