Breezing forms es una extensión bastante conocida en el mundo de Joomla. Te permite crear formularios de una forma bastante rápida, y además también permite empaquetarlos en ficheros XML y transportarlos de un sitio web a otro, entre muchas otras características. Más adelante escribiré más en detalle sobre Breezing forms.
Breezingforms permite enviar un formulario automáticamente a una dirección de correo electrónico, y también se guarda un registro con los campos de cada formulario enviado en la base de datos. Esto está muy bien y ahorra mucho trabajo a los usuarios de Joomla.
Aún así, mucha gente pide informes en PDF de sus formularios, y nos encontramos con que Breezingforms no tiene esta opción. Vamos a ver de una manera fácil como crear informes PDF automatizados para nuestros formularios, y lo bueno de este método es que nos va a servir para cualquier formulario que creemos.
Lo primero que tenemos que hacer es crear nuestro formulario, cualquier formulario, simplemente créalo y añade todos los campos que necesites. Yo voy a usar el formulario estándar de contacto que usamos en Webempresa.
Una vez tengamos el formulario creado, pinchamos sobre editar formulario y nos vamos a la pestaña Enviar Piezas, y en el inicio del Submit añadimos la siguiente línea de código:
$this->execPieceByName('genera_pdf');
Esta línea provocará que se ejecute la pieza con nombre ‘genera_pdf’ que vamos a crear a continuación.
Ahora vamos a Administrador de piezas y creamos una nueva pieza con el nombre ‘genera_pdf’. Da igual el nombre del paquete, en este caso, yo he creado un paquete llamado ‘utils’. En esta pieza vamos a hacer uso de la librería de generación de pdf para PHP FPDF, deberéis de descargarla de su página web oficia.
En este ejemplo he usado la versión 1.6. Para que todo quede ordenado, he instalado la librería en el directorio ‘libraries’ de Breezingforms, que se encuentra en la siguiente ruta: ‘administrator/components/com_facileforms/libraries’. En este directorio he creado el directorio fpdf y dentro he extraido el contenido del zip de la librería fpdf.
Una vez hecho esto ya podemos empezar a crear código, vamos a ver el código de nuestra pieza ‘genera_pdf’:
require_once(JPATH_ADMINISTRATOR.DS.'components/com_facileforms/libraries/fpdf/fpdf.php');
$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','',8);
$pdf->SetTextColor(0, 0, 0);
// create the message
$pdf->Write(4,utf8_decode( "Informe : " . $this->formrow->title.nl().nl()));
$pdf->Ln();
$pdf->Write(4,utf8_decode("Fecha de envío: " . $this->submitted.nl().nl()));
$pdf->Ln();
if (count($this->maildata)) {
foreach ($this->maildata as $data) {
$pdf->SetFont('Arial','B',8);
$pdf->Write(4,utf8_decode($data[_FF_DATA_TITLE] . ": "));
$pdf->SetFont('Arial','',8);
$pdf->Write(4,utf8_decode($data[_FF_DATA_VALUE].nl()));
$pdf->Ln();
}
}
//Close and output PDF document
$pdf->Output(JPATH_ADMINISTRATOR.DS.'components/com_facileforms/images/informe'.date('d-m-Y_H-i-s').'.pdf');
Vamos a echar un vistazo al código.
Primero enlazamos la librería FPDF que previamente hemos subido al servidor. Acto seguido creamos un objeto de tipo FPDF y le ‘seteamos’ las propiedades de nuestro documento. Vamos escribiendo el título del formulario, la fecha de envío y después iteramos sobre el array de datos del formulario y pintamos todos los datos en el pdf.
Usamos la función utf8_decode para que se impriman correctamente los caracteres como los acentos o la ñ, si no se usara esta función saldrían símbolos extraños. Con esto ya estaría todo listo para realizar informes en PDF de cualquier formulario, de una forma muy rápida y fácil, como casi todo en Joomla 😉 . El resultado es este: PDF generado.
Este es un ejemplo muy sencillo, lo puedes adornar muchísimo y crear algo con un aspecto mucho más profesional, mira en la web de FPDF los métodos de que dispones para crear tus propios informes profesionales en PDF.
Puedes encontrar más información sobre Breezingforms en este hilo de nuestro recién estrenado foro.
¿Te ha resultado útil este artículo?
Miembro del equipo de Administración de sistemas de webempresa.com y líder del equipo de desarrollo de CiberProtector y CiberBox.