Foros del Web » Programando para Internet » PHP »

Descargar PDF al hacer submit en formulario

Estas en el tema de Descargar PDF al hacer submit en formulario en el foro de PHP en Foros del Web. Buenas tardes estimados! Tengo un formulario, en el cual al hacer el submit, debería ofrecer la descarga de un archivo PDF, pero no consigo como ...
  #1 (permalink)  
Antiguo 22/03/2019, 15:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Pregunta Descargar PDF al hacer submit en formulario

Buenas tardes estimados!

Tengo un formulario, en el cual al hacer el submit, debería ofrecer la descarga de un archivo PDF, pero no consigo como hacerlo, he buscado códigos por alli, y consigo ofrecer la descarga al hacer click desde un enlace, pero no funciona si lo hago de forma automática, en lugar de eso intenta abrir el archivo en línea e incerta mucho código en el sitio.

Todo el proceso del formulario se realiza exitosamente, a ecepción de la descarga del archivo, estoy usando html y PHPMailer para el formulario, espero puedan orientarme.

Saludos.
  #2 (permalink)  
Antiguo 24/03/2019, 16:49
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Descargar PDF al hacer submit en formulario

Hola:

No estoy seguro que se pueda... creo que sí, pero ¿por qué no dejarle la opción al visitante?... y poner el pdf en un enlace normal...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 24/03/2019, 18:37
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Descargar PDF al hacer submit en formulario

Ya intentaste con

Código PHP:
Ver original
  1. $file = __DIR__.'/archivo.pdf';
  2.  
  3. header("Content-Description: File Transfer");
  4. header("Content-Type: application/octet-stream");
  5. header("Content-Disposition: attachment; filename=" . basename($file));
  6.  
  7. readfile ($file);
  8. exit();
  #4 (permalink)  
Antiguo 25/03/2019, 09:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Descargar PDF al hacer submit en formulario

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

No estoy seguro que se pueda... creo que sí, pero ¿por qué no dejarle la opción al visitante?... y poner el pdf en un enlace normal...

Saludos
Claro, lo he pensado, pero la idea es que llene el formulario para descargar despues un catálogo, la idea de los datos es que luego un agente de ventas pueda comunicarse con la persona que lo descarga.


Cita:
Iniciado por ArturoGallegos Ver Mensaje
Ya intentaste con

Código PHP:
Ver original
  1. $file = __DIR__.'/archivo.pdf';
  2.  
  3. header("Content-Description: File Transfer");
  4. header("Content-Type: application/octet-stream");
  5. header("Content-Disposition: attachment; filename=" . basename($file));
  6.  
  7. readfile ($file);
  8.  exit();

HE intentado con varios códigos parecidos, y solo logro que se abra en línea entre el formato del sito (puros códigos). lo que si veo nuevo en el que me acabas de facilitar, el la parte de "Content-Description: File Transfer", voy a probarlo y comento, gracias por la info


EDITO: He intentado con el código y el archivo sigue intentando abrirse en el navegador, no ofrece la pantalla de descarga, no se que mas hacer :/

Última edición por orionce; 25/03/2019 a las 12:43
  #5 (permalink)  
Antiguo 25/03/2019, 13:36
 
Fecha de Ingreso: julio-2009
Mensajes: 121
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Descargar PDF al hacer submit en formulario

Hola!

Prueba esto!

Código PHP:
$file __DIR__.'/archivo.pdf'

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="FILENAME"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' filesize("$file"));
ob_clean();
flush();
readfile($file);     
exit(); 
  #6 (permalink)  
Antiguo 25/03/2019, 15:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Descargar PDF al hacer submit en formulario

Cita:
Iniciado por sk0rpi0n Ver Mensaje
Hola!

Prueba esto!

Código PHP:
$file __DIR__.'/archivo.pdf'

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="FILENAME"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' filesize("$file"));
ob_clean();
flush();
readfile($file);     
exit(); 
Gracias por responder, pero sigo teniendo el mismo resultado, el archivo se carga en la página. Para el send estoy usando esta condición.

Código PHP:
      
    
if($_POST) {
        require 
'mailer/valida-catalogo.php';
        } else  {
            
$mail->Send();

            
$file __DIR__.'/../catalogos/catalogo.pdf'
            
header('Content-Description: File Transfer');
            
header('Content-Type: application/octet-stream');
            
header('Content-Disposition: attachment; filename="FILENAME"');
            
header('Content-Transfer-Encoding: binary');
            
header('Expires: 0');
            
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
            
header('Pragma: public');
            
header('Content-Length: ' filesize("$file"));
            
ob_clean();
            
flush();
            
readfile($file);     
            exit();

// $mb= "<i>Gracias por descargar nuestro catálogo ". $nombre. ".<br>". "<small>Su descarga se iniciará en unos segundos. <br>Si no inicia, haz click <a href='catalogos/catalogo.pdf' download>aqui</a> para descargar el archivo</small></i>";
        
}          
    } 
  #7 (permalink)  
Antiguo 25/03/2019, 22:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Descargar PDF al hacer submit en formulario

No puedes combinar salida HTML y descarga de archivos. Normalmente muestras un mensaje con el resultado del formulario y tienes dos opciones:

1. Como te dijo Caricatos, poner un enlace para descarga del PDF
2. Usar una etiqueta meta refresh para "abrir" directamente el enlace de descarga. Un ejemplo sencillo: http://www.forosdelweb.com/f18/redir...0/#post3097253
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 26/03/2019, 10:10
 
Fecha de Ingreso: septiembre-2008
Mensajes: 9
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Descargar PDF al hacer submit en formulario

Cita:
Iniciado por Triby Ver Mensaje
No puedes combinar salida HTML y descarga de archivos. Normalmente muestras un mensaje con el resultado del formulario y tienes dos opciones:

1. Como te dijo Caricatos, poner un enlace para descarga del PDF
2. Usar una etiqueta meta refresh para "abrir" directamente el enlace de descarga. Un ejemplo sencillo: [url]http://www.forosdelweb.com/f18/redireccionar-tras-cargar-pagina-738500/#post3097253[/url]
Gracias por el dato amigo, al final opté por colocar un enlace de descarga luego de llenar el formulario.

Gracias a todos y saludos.
  #9 (permalink)  
Antiguo 26/03/2019, 17:59
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Descargar PDF al hacer submit en formulario

solo para probar para que te quites el mal de espina, lo que puedes hacer es usar otro enlace para la descarga del PDF, así como lo has puesto en el enlace ponlo en un iframe oculto opacity 0 tamaño de 1x1 para que no te afecte el diseño, seguro que te funciona con eso.

Etiquetas: formulario, funcion, html, pdf, submit
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:31.