Foros del Web » Creando para Internet » Diseño web »

Abrir ventana diálogo descarga PDF

Estas en el tema de Abrir ventana diálogo descarga PDF en el foro de Diseño web en Foros del Web. Hola!! Tengo una duda qué no sé si se puede hacer, he mirado por el foro pero no encuentro nada. El caso es que quiero ...
  #1 (permalink)  
Antiguo 22/10/2007, 14:56
 
Fecha de Ingreso: octubre-2007
Mensajes: 22
Antigüedad: 16 años, 6 meses
Puntos: 0
Abrir ventana diálogo descarga PDF

Hola!!

Tengo una duda qué no sé si se puede hacer, he mirado por el foro pero no encuentro nada.

El caso es que quiero poner un link a un documento PDF y que me salga la ventana de cuadro de dialogo "guardar como..." en lugar de abrirlo/visualizarlo directamente en el navegador.....

¿ Se puede hacer ésto ?

Muchas gracias de antemano

Un saludo a todo el mundo!!!
  #2 (permalink)  
Antiguo 22/10/2007, 22:28
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Abrir ventana diálogo descarga PDF

Hola Crisrebo... cómo vas?? Bienvenido al Foro!!!!

Pues la única sería que comprimieras el archivo pdf en formato rar o zip. De esa manera ya sale el cuadro de diálogo "Guardar como"..., no veo otra

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 23/10/2007, 01:49
 
Fecha de Ingreso: octubre-2007
Mensajes: 22
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Abrir ventana diálogo descarga PDF

Carxl gracias por tu respuesta.

Pensé en esa solución, pero no me gustaba hacerlo por aquello de "ponerselo fácil" al usuario, sospecho que habrá alguno que si le pones un ZIP se vuelva loco...

Además, probé en local (no he hecho la prueba en servidor) a poner un zip y resulta que el navegador me abría el ZIP directamente!!!!

Hace unos años yo juraría que hize algo de esto y había forma de forzar a sacar la ventana de "Guardar como..." con ficheros PDF, pero el mismo ejemplo que sospecho funcionaba, ahora lo visualiza directamente. ¿ Podría ser por versiones de navegadores ? que la versión de hace unos 2-3 años si sacase la ventanita?

Muchas gracias por la ayuda
  #4 (permalink)  
Antiguo 23/10/2007, 22:21
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Abrir ventana diálogo descarga PDF

Hola de nuevo Crisrebo!! Cómo vas??

Mira yo la verdad también creo a ver visto algo así, y ahora pensando , por que no buscas sobre "cabeceras php", osea lo que tiene que ver con "header:", "MIME", esas instrucciones, tal vez te puedan ayudar, osea indicarle al navegador que tipo de archivo vas a descargar... la verdad no me acuerdo muy bien

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 24/10/2007, 01:18
 
Fecha de Ingreso: octubre-2007
Mensajes: 22
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Abrir ventana diálogo descarga PDF

Gracias Carxl, voy a buscar lo que me dices, si encuento algo lo pongo por aqulí :)

El caso es que lo que yo recuerdo, que creo que funcionaba, no usaba nada de PHP. De hecho no tenía nada "raro", me suena que era algo bastante sencillito y basicamente con HTML sin más

saludos
  #6 (permalink)  
Antiguo 24/10/2007, 08:51
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Abrir ventana diálogo descarga PDF

Hola Crisrebo!! Còmo vas??

Sí, si encuentras algo me dices por fa?? Por que serìa interesante saberlo...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #7 (permalink)  
Antiguo 24/10/2007, 09:01
ramonjosegn
Invitado
 
Mensajes: n/a
Puntos:
Re: Abrir ventana diálogo descarga PDF

encontre esto navegando por la web , a ver si te sirve

Si queremos que algún cliente se pueda decargar un archivo mp3 (que no tiene porque ser con copyright) o cualquier otro archivo, lo normal es enlazarlo directamente como si fuera un zip o algo así. Lo que ocurrirá es que nuestro reproductor favorito se pondrá en funcionamiento para reproducir ese archivo. Si lo que queremos es que salga el cuadro de diálogo descargar archivo deberemos hacer algo parecido a los siguiente:

En flash asignamos a un boton el siguiente código:

////DESCARGAR
descarga_btn.onRelease = function() { //al pulsar el boton
if (varDelMp3 != undefined) { //variable que contiene el nombre y ruta del archivo mp3
var el_audio:LoadVars = new LoadVars(); //creamos el objeto loadVars
el_audio.so_mp3 = varDelMp3; //le asignamos el archivo
el_audio.send("audios_descargar.php", "_self"); //lo enviamos al php
} else {
getURL("error.html", "_blank"); //si la cosa sale mal, ponemos un lindo archivo disculpándonos.
}
};


A continuación en el php ponemos:


<?php

function descargar($so_mp3){

$elArchivo = basename($so_mp3);

header( "Content-Type: application/octet-stream");
header( "Content-Length: ".filesize($so_mp3));
header( "Content-Disposition: attachment; filename=".$elArchivo."");
readfile($so_mp3);
}
descargar($so_mp3);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />-->
<title>Error al Descarregar el arxiu d'audio</title>
</head>

<body>
<p>No se ha podido descargar el audio</p>
</body>
</html>
  #8 (permalink)  
Antiguo 24/10/2007, 09:02
ramonjosegn
Invitado
 
Mensajes: n/a
Puntos:
Re: Abrir ventana diálogo descarga PDF

esto en otra web

Por regla general los exploradores de Internet muestran las páginas con contenido ASCII (texto plano) y en el caso de que su contenido sea binario, la muestran en caso de que las "conozcan", por ejemplo los JPG, GIF ó PNG, en el caso de tener instalado Flash o la máquina virtual de java o PDF navegarían a estos archivos o sacaría el mensaje informativo de descarga en caso de no tenerlos, o por ejemplo un documento de Word en Internet Explorer lo mostraría mientras que en otros navegadores mostraría el mensaje de descarga.

Sin embargo en muchas ocasiones, podemos querer forzar a que un archivo siempre se descargue independientemente del tipo de archivo que sea. Para estos casos podemos informar al explorador de que el archivo que le enviamos es para descargar. Esto se hace con las cabeceras del documento, concretamente:

header("Content-type: application/force-download");


El artículo de ejemplo recoge el nombre del archivo a descargar por URL, con la variable "doc", el único cambio que habría que hacer en el PHP es pasar la dirección del directorio de "descargas". El documento a descargar se coge de la unión del directorio de descargas y el nombre del documento pasado por URL.
Por motivos de seguridad se reemplazan los dos tipos de barras separadoras de directorios en diferentes sistemas operativos por "_". Esto evita que usuarios malintencionados "jueguen" con las variables pasadas y se descarguen documentos que no sean públicos.

Recordar que no se debe de enviar ningún dato antes de las cabeceras (header), tener cuidado, ya que es muy típico el error de introducir antes del código un salto de línea o un espacio y con esto ya daría un error de tipo Warning: Cannot modify header information - headers already sent by (output started ... HTML:

<!--Esto cambiaría el nombre del archivo a descargar a "..index.php".-->
<a href="descargar.php?doc=../index.php">Pincha para descargar</a><br>
<!--Descarga dibujo.bmp del directorio de descargas-->
<a href="descargar.php?doc=dibujo.bmp">Pincha para descargar</a>



Código:

<?php
//Copyright © McAnam.com

$sUrlDescargas = "/descargas/"; //Introducir directorio de descargas
$vBarras = array("/", "\\");
$sDocumento = str_replace($vBarras, "_", $sUrlDescargas.$_GET["doc"]);


header("Content-type: application/force-download");
header("Content-Disposition: filename=".basename($_GET["doc"]));
header("Content-Transfer-Encoding: binary");
//header("Content-Length: ".filesize(sDocumento));


if (!@readfile($sDocumento))
echo "Ha sido imposible descargar el fichero";

?>
  #9 (permalink)  
Antiguo 24/10/2007, 09:06
ramonjosegn
Invitado
 
Mensajes: n/a
Puntos:
Re: Abrir ventana diálogo descarga PDF

otro codigo en php

Este codigo te ayudara a forzar una descarga, para que no se ejecute con el navegador al hacer click sobre el


<?

$id = "archivo.pdf";
$enlace = $path_a_tu_doc."/".$id;
header ("Content-Disposition: attachment; filename=".$id."\\n\\n");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($enlace));
readfile($enlace);

?>
  #10 (permalink)  
Antiguo 24/10/2007, 09:10
ramonjosegn
Invitado
 
Mensajes: n/a
Puntos:
Re: Abrir ventana diálogo descarga PDF

este no se si es php, pero ahi queda
************************
Con este código forzamos a que salga el diálogo de descarga de archivos en el navegador.




<%
'8***********************************************8
' Jason Withrow - For ASP101 July 2001
' This page forces the save as dialogue to prevent
' files from being opened in the browser.
'
' [email protected]
'8***********************************************8

Response.Buffer = True
Dim strFilePath, strFileSize, strFileName

Const adTypeBinary = 1

strFilePath = Request.QueryString("File")
strFileSize = Request.QueryString("Size")
strFileName = Request.QueryString("Name")

Response.Clear

'8*******************************8
' Requires MDAC 2.5 to be stable
' I recommend MDAC 2.6 or 2.7
'8*******************************8
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath

strFileType = lcase(Right(strFileName, 4))

' Feel Free to Add Your Own Content-Types Here
Select Case strFileType
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select

Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
Response.AddHeader "Content-Length", strFileSize
' In a Perfect World, Your Client would also have UTF-8 as the default
' In Their Browser
Response.Charset = "UTF-8"
Response.ContentType = ContentType

Response.BinaryWrite objStream.Read
Response.Flush

objStream.Close
Set objStream = Nothing
%>
  #11 (permalink)  
Antiguo 24/10/2007, 09:11
ramonjosegn
Invitado
 
Mensajes: n/a
Puntos:
Re: Abrir ventana diálogo descarga PDF

otro codigo


En ocasiones, queremos que el cliente pueda descargar ciertos archivos directamente sin que los abra el navegador. Esto suele pasar con archivos de texto, archivos HTML o documentos en PDF que por defecto son abiertos y mostrados por el navegador si los enlazamos directamente. Esta técnica es especialmente útil con documentos muy grandes para no tener que esperar a que el navegador descargue toda la información.

<?php ob_start(); ?>
<?php
$file_name = $_REQUEST[’file_name’];
$full_name = “tmp/”.$file_name;

header (”Content-Type: application/force-download”);
header (”Content-Disposition: attachment; filename=”.$file_name);
?>
<?php ob_end_flush(); ?>
readfile($full_name);
  #12 (permalink)  
Antiguo 25/10/2007, 02:58
 
Fecha de Ingreso: octubre-2007
Mensajes: 22
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Abrir ventana diálogo descarga PDF

Una pregunta tonta (tal vez) ...

Esto código donde lo pongo exactamente dentro de mi documento HTML ???

Muchas gracias por la ayuda / información. Tengo que probarlo

Saludos
  #13 (permalink)  
Antiguo 25/10/2007, 07:41
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Abrir ventana diálogo descarga PDF

Hola Crisrebo!! Còmo vas??

Pues la verdad si es un pregunta muyyy tonta

Noooo mentiras Estoy bromeando

Donde lo pones?? En la página donde esta el vinculo para descargar el archivo, ahí mismo va! Pruebas y me comentas porfa como te fue?? Para saber si se puede hacer??

Saludos y gracias
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #14 (permalink)  
Antiguo 25/10/2007, 15:03
 
Fecha de Ingreso: octubre-2007
Mensajes: 22
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Abrir ventana diálogo descarga PDF



Ya me supongo que en la página donde va el archivo, pero me refería a qué parte!!! dentro del body? del header?

Bueno, voy a probar a ponerlo en todos sitios, alguno funcionarás
  #15 (permalink)  
Antiguo 27/10/2007, 12:58
 
Fecha de Ingreso: octubre-2007
Mensajes: 22
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Abrir ventana diálogo descarga PDF

He avanzado algo, he usado uno de los códigos que aporta ramonjosegn que en principio no entendía muy bien y ya he pillado la idea.

En el documento HTML he puesto el link de la siguiente forma:
<a href="descargar.php?doc=documento.pdf">Pincha para descargar</a>

y aparte un documento php llamado descargar.php con el codigo:

<?php


$sUrlDescargas = ""; //Introducir directorio de descargas
$vBarras = array("/", "\\");
$sDocumento = str_replace($vBarras, "_", $sUrlDescargas.$_GET["doc"]);


header("Content-type: application/force-download");
header("Content-Disposition: filename=".basename($_GET["doc"]));
header("Content-Transfer-Encoding: binary");
//header("Content-Length: ".filesize(sDocumento));


if (!@readfile($sDocumento))
echo "Ha sido imposible descargar el fichero";

?>

Lo he subido al server (en mi pc no funcionaba) y con Mozilla Firefox funciona bien, saca la ventana de "Guardar como..." pero con IE sigue abriendome el documento para leerlo

Alguien sabe que puede pasar?

Gracias y un saludo
  #16 (permalink)  
Antiguo 27/10/2007, 17:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 12
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Abrir ventana diálogo descarga PDF

claro claro claro claro claro claro claro claroclaro claro claro claro
  #17 (permalink)  
Antiguo 29/10/2007, 08:04
ramonjosegn
Invitado
 
Mensajes: n/a
Puntos:
Re: Abrir ventana diálogo descarga PDF

hola!

si no necesitas de mucho espacio aca hay una solucion posible (con mucho espacio si estas dispuesto a pagar), se trata de un sitio para subir archivos, pero que permite crear una especie de previo en el navegador (tampoco sé si funciona con todos los navegadores), bueno ahi te dejo la web para que hagas tus propias pruebas

http://www.webasyst.net/

pd: iexplorer se comporta de forma diferente dependiendo de elecciones previas del usuario y de la cache, asi que es un poco impredecible lo que hara o no hara
  #18 (permalink)  
Antiguo 20/05/2009, 08:32
 
Fecha de Ingreso: abril-2009
Ubicación: Barcelona
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Respuesta: Abrir ventana diálogo descarga PDF

Hola,

Con este código puedes hacer que el archivo se descarge mediante la ventana de díalogo directamente desde flash, sin nada de php.
Fijate que fácilmente puedes crear un mc con un mensaje mientras carga, y otro cuando la descarga está completa.


on (release) {

import flash.net.FileReference;

var listener:Object = new Object();

listener.onSelect = function(file:FileReference):Void {
trace("onSelect: " + file.name);
}

listener.onCancel = function(file:FileReference):Void {
trace("onCancel");
}

listener.onOpen = function(file:FileReference):Void {
trace("onOpen: " + file.name);
}

listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);


}

listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);

}

listener.onIOError = function(file:FileReference):Void {
trace("onIOError: " + file.name);
}

var fileRef:FileReference = new FileReference();
fileRef.addListener(listener);
var url:String = "nombre-del-archivo.pdf";
if(!fileRef.download(url, "nombre-con-el-cual-deseas-que-se-guarde.pdf")) {
trace("dialog box failed to open.");
}

}
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 16:38.