Cómo crear informes...
Avisos
Vaciar todo

Cómo crear informes PDF con Joomla y Breezingforms  

Página 1 / 3
 
Juan
 Juan
Usuario activo

Hola A todos.
Después de ver el post: Cómo crear informes en PDF con Joomla y Breezingforms he conseguido hacer que se guarde el archivo pdf en la direción correcta y también que me envíe el pdf por mail, lo que necesitaba es que una vez se envíe el formulario me habra directamente en otra o la misma ventana el pdf, es decir al darle al botón enviar que me habra una nueva ventana con el pdf. Alquien sabe como puedo hacerlo???

Mil gracias..

Citar
Respondido : 10/06/2010 3:15 pm
David Noguera
 David Noguera
Miembro Moderator

Hola jjuarezcal,

lo que yo haría sería crear una segunda página en el formulario, y después de enviar el formulario por mail, redirigir a esta segunda página.
Para hacer esto, te vas al formulario, editar formulario y en la pestaña Scripts, en el script del submitted, pones este código:

function ff_FORMNAME_submitted(status, message) {

switch (status) {
case FF_STATUS_OK:
ff_switchpage(2);
break;
case FF_STATUS_UNPUBLISHED:
case FF_STATUS_SAVERECORD_FAILED:
case FF_STATUS_SAVESUBRECORD_FAILED:
case FF_STATUS_UPLOAD_FAILED:
case FF_STATUS_ATTACHMENT_FAILED:
case FF_STATUS_SENDMAIL_FAILED:
default:
alert(message);
} // switch
} // ff_contacto_submitted

Cambiando FORMNAME por el nombre de tu formulario.

Después te vas a la página 2 y pones este código:

window.onload = inicio_pdf;
function inicio_pdf(){
window.open('pdfs/mi_pdf.pdf')
}

Ya nos comentas si te ha funcionado.

Saludos.

ResponderCitar
Respondido : 10/06/2010 5:11 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

Juan
 Juan
Usuario activo

Hola David.
Antes de nada darte las gracias por tu pronta respuesta.

No me aclaro mucho con lo que tengo que hacer:
Creo un botón regular de envío y en la pestaña de scripts le pongo:

function ff_contacto1_submitted(status, message) {
switch (status) {
case FF_STATUS_OK:
ff_switchpage(2);
break;
case FF_STATUS_UNPUBLISHED:
case FF_STATUS_SAVERECORD_FAILED:
case FF_STATUS_SAVESUBRECORD_FAILED:
case FF_STATUS_UPLOAD_FAILED:
case FF_STATUS_ATTACHMENT_FAILED:
case FF_STATUS_SENDMAIL_FAILED:
default:
alert(message);
} // switch
} // ff_contacto_submitted

después de esto creo una nueva página y aquí es donde seguro hago algo mal, donde le añado el código:

tengo que crear un campo texto estatico/HTML o como hago este paso???

Hoy me he instlado el componente y todavía no se muy bien como rula.

Gracias por tu ayuda..

un saludo

ResponderCitar
Respondido : 10/06/2010 5:37 pm
David Noguera
 David Noguera
Miembro Moderator

Hola jjuarezcal ,

¿¿el formulario llega hasta la pagina 2 ?? comprueba si esta llegando a la pagina 2, pon un texto cualquiera para ver si llegas. Si el problema es que una vez en la pagina 2 no sabes como abrir el PDF. Lo que te propongo es que abras un popup con javascript, de la manera habitual.

Yo te he pegado este código:

window.onload = inicio_pdf;
function inicio_pdf(){
window.open('pdfs/mi_pdf.pdf')
}

Si te fijas, a la función window.open le pasamos un string con la ruta del PDF. Supongo que guardarás la ruta del PDF en alguna variable. Simplemente tendrás que sustituir este string por la ruta correcta del PDF, entonces cuando se abra el popup, se abrirá el PDF automáticamente.

Otra forma sería poner un iframe en la página 2 que apunte a la ruta del PDF, de esta forma se abriría un visor de PDF, el que tengas instalado como plugin en el navegador.

Lo más imporante es saber si llegas a la pagina 2 o no llegas, si estas llegando a la pagina 2, ya lo tienes chupado, solo tienes que abrir un popup con javascript.

Haz las pruebas y ya nos cuentas.

Saludos.

ResponderCitar
Respondido : 10/06/2010 7:28 pm

Juan
 Juan
Usuario activo

Hola de nuevo.
Estoy en camino no me rindo para conseguirlo jeje.

Llego bien a la segunda página como dices he puesto un texto y llego perfectamente el problema es que no se como meter ni el javascript, ni un iframe en la segunda página como meto codigo en la segunda página?? tengo que crear un campo oculto o como lo hago???

Siento molestar tanto, un saludo y gracias.

ResponderCitar
Respondido : 10/06/2010 8:26 pm
David Noguera
 David Noguera
Miembro Moderator

Hola

no molestas, tranquilo 🙂

Para poner el código javascript que se ejecute cuando se cargue la segunda página del formulario, puedes crear un campo de tipo HTML estático y poner dentro las etiquetas con el código javascript que quieras que se ejecute.

Otra opción, sería que al pulsar el botón de enviar formulario, que provoca que se genere el PDF, crear una acción para que al hacer click espere unos 4 segundos más o menos, para que de tiempo a generarse el PDF en el servidor, y abras el popup con la función window.open. Puedes usar la función setTimeout de javascript para esperar estos 4 segundos.

Para añadir esta acción, tendrás que editar el botón y en la pestaña Scripts selecciona Personalizado, pinchas en "crear código del framework" y en el switch que se genera, en el case "click" introduces el código para abrir el PDF.

Espero haberte podido ayudar, suerte y si tienes dudas, pregunta 🙂

Saludos

ResponderCitar
Respondido : 11/06/2010 5:52 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

Juan
 Juan
Usuario activo

Hola David.
Aquí estoy de nuevo dando gerra mira a ver si me aclaro con esto:

window.onload = inicio_pdf;
function inicio_pdf(){
window.open('aquí iria la variable')
}

que tengo que meter aquí que no me aclaro yo cree con el tutorial de web empresa:

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');

De aquí me guarda el archivo pdf en la carpeta components/com_facileforms/images/informe como hago para llamar al pdf con el script que me pasaste??

Es el último paso que me falta ya casi lo tengo jejejej.

Mil gracias.

ResponderCitar
Respondido : 11/06/2010 6:21 pm
David Noguera
 David Noguera
Miembro Moderator

Prueba este código:

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

/********************************** AQUÍ HAGO CAMBIOS *********************************/

$path = JPATH_ADMINISTRATOR.DS.'components/com_facileforms/images/informe'.date('d-m-Y_H-i-s').'.pdf';
$_SESSION['pdf_path'] = $path;
$pdf->Output($path);

Después , en la página 2 puedes crear un campo de tipo oculto que se llame "path" y en el value le pones este valor:

y en el action "click" del botón enviar pones algo así:

window.onload = inicio_pdf;

function inicio_pdf(){
window.open(ff_getElementByName('pdf_path').value);
}

Debería de funcionar 🙂

Ya nos cuentas. Saludos y suerte.

ResponderCitar
Respondido : 11/06/2010 7:23 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

Juan
 Juan
Usuario activo

Vamos a ver si hago los pasos de forma correcta corrigeme please si lo hago mal.

pasamos de que tengo creado un campo de introducion de texto y un botón de envio.

me voy a administrar piezas creo una nueva pieza la llamo de nombre y titulo=genera_pdf y paquete le llamo utils e incluyo el siguiente código:

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

/********************************** AQUÍ HAGO CAMBIOS *********************************/

$path = JPATH_ADMINISTRATOR.DS.'components/com_facileforms/images/informe'.date('d-m-Y_H-i-s').'.pdf';
$_SESSION['pdf_path'] = $path;
$pdf->Output($path);

Lo describo así todo así me entenderá mejor.

Después me voy a administrar formularios y en script en Script del Submitted escribo:

function ff_contrato_submitted(status, message)
{
switch (status) {
case FF_STATUS_OK:
// do whatever desired on success
break;
case FF_STATUS_UNPUBLISHED:
case FF_STATUS_SAVERECORD_FAILED:
case FF_STATUS_SAVESUBRECORD_FAILED:
case FF_STATUS_UPLOAD_FAILED:
case FF_STATUS_ATTACHMENT_FAILED:
case FF_STATUS_SENDMAIL_FAILED:
default:
alert(message);
} // switch
} // ff_contrato_submitted

y en enviar pieza en Inicio del Submit escribo:

$this->execPieceByName('ff_InitLib');
$this->execPieceByName('genera_pdf');

Ahora paso al formulario y hago:

en el botón de enviar le doy a la funcion de la librería de ff_nextpage

y en la segunda página he creado un campo oculto con titulo y nombre= path

y en el script en Script de Validación escribo:

window.onload = inicio_pdf;

function inicio_pdf(){
window.open(ff_getElementByName('pdf_path').value);
}

con esto debería estar listo todo??

Que hago mal pues no me funciona???

ResponderCitar
Respondido : 11/06/2010 7:50 pm
David Noguera
 David Noguera
Miembro Moderator

La semana que viene tenemos pensado hacer un video de BreezingForms, intentaremos incluir este tema en el temario del video, así matamos dos pájaros de un tiro... estate atento.

Saludos

ResponderCitar
Respondido : 11/06/2010 10:33 pm

Cursos Gratuitos WordPress

Juan
 Juan
Usuario activo

Genial, pues me estaré atento.
Muchas gracias por tu ayuda.

Solo una cosa más se puede pasar todos los datos de un una pagina a otra??

es decir:
Nombre: CAJA DE TEXTO
Aellidos: CAJA DE TEXTO

Botón

Y en la siguiente página que se vea todo el contenido:

Nombre: Juan
Apellidos: Fernandez

Algo así como se hace con variables en php???

Se puede hacer con Breezingfo???

Saludos y gracias de nuevo.

ResponderCitar
Respondido : 11/06/2010 10:52 pm
Lucas
 Lucas
Miembro Admin

Hola,

Puedes utilizar este código para obtener el valor de lo que te han rellenado en el primer paso:

Tienes que remplazar NOMBRE por el nombre del campo que hayas creado en BreezingForms.

Te puede ser útil este artículo de nuestro blog:

ResponderCitar
Respondido : 12/06/2010 12:37 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

Juan
 Juan
Usuario activo

Hola Lucas.

Gracias por tu respuesta yo hago lo siguiente:

Le llamo a un campo de texto nombre y en la segunda página en un texto/HTML Estático escribo:

Y veo este error:

Fatal error: Call to undefined function ff_getSubmit() in /usr/home/pruebasweb/www/components/com_facileforms/facileforms.process.php(1047) : eval()'d code on line 1

Que hago mal???

Me voy a leer a fondo lo que me pasas a ver si aprendo algo pues me parece un componente de lo más interesante.

Mil gracias, realmente he recibido una gran ayuda del foro.

Saludos.

ResponderCitar
Respondido : 12/06/2010 4:17 pm
Juan
 Juan
Usuario activo

He encontrado una solución para lo que buscaba para poder imprimir el formulario en pdf:
http://www.facileforms.biz/component/option,com_docman/task,cat_view/gid,91/Itemid,96/

se llama print button sampel esto para imprir el pdf
y para pasar las variables de una página a otra también tenemos:
Show Sumary on a page

Espero pueda ayudar a alguien que buscase algo como esto.

Saludos.

ResponderCitar
Respondido : 13/06/2010 8:47 pm

David Noguera
 David Noguera
Miembro Moderator

OK, gracias por el enlace y por colaborar en el foro. La semana que viene queremos hacer algún video de BreezingForms, lo colgaremos aquí también.

Saludos.

ResponderCitar
Respondido : 13/06/2010 9:26 pm
Página 1 / 3