Estoy tratando de crear dinámicamente un PDF en línea que, cuando el usuario elija guardarlo, solicite mi nombre de archivo personalizado. De acuerdo con the documentation, el atributo saveasname
debe hacer lo que yo quiera.Content-disposition siendo ignorado en IE 9 y Firefox 13
(formato = "PDF" solamente) El nombre de archivo que aparece en el cuadro de diálogo Guardar como cuando un usuario guarda un archivo PDF escrito en el navegador.
Sin embargo, lo que sucede tanto en IE 9 como en Firefox 13.0.1 es que el nombre de archivo que aparece en el cuadro de diálogo Guardar es igual que mi plantilla CF, pero con una extensión PDF. (En otras palabras, mi código está en makepdf.cfm
y SaveAs me pide que guarde makepdf.pdf
.) En Chrome, sin embargo, funciona perfectamente. (Todo en Windows 7.)
Aquí está mi código para crear el PDF:
<cfdocument format="pdf" bookmark="true" saveasname="MyReport.pdf">
Si declaro explícitamente la disposición de contenido y tipo de contenido, al igual que
<cfheader name="Content-Disposition" value="inline; filename=MyReport.pdf">
<cfcontent type="application/x-pdf">
<cfdocument format="pdf" bookmark="true" saveasname="MyReport.pdf">
- Chrome me dice que "Content-Disposition" ha sido declarado dos veces
- Firefox me dice que el archivo PDF está corrupto
- es decir, justo lo ignora (y todavía no muestra el nombre de archivo de la derecha)
Si sólo se basan en la cabecera
<cfheader name="Content-Disposition" value="inline; filename=MyReport.pdf">
<cfcontent type="application/x-pdf">
<cfdocument format="pdf" bookmark="true">
consigo el mismo comportamiento que el primer fragmento de código.
Sé cómo hacer que el navegador solicite la descarga en lugar de mostrar en línea, y todo funciona como se esperaba en ese momento, pero ese no es el comportamiento deseado.
Necesito usar las horas y las fechas en los nombres de los archivos y los usuarios finales no son lo suficientemente inteligentes como para no sobrescribir sus archivos (en caso de que opten por guardarlos).
¿Hay algo que me falta que haga que IE y Firefox hagan lo que se supone que deben hacer? ¿Qué otros navegadores van a hacer esto? Mobile Safari?
URL re-escritura no es una opción para este proyecto en particular, pero esto es una buena información a tener en el futuro. – ale
Resulta que no necesita reescritura de URL: basta con agregar una barra y basta con el nombre de archivo elegido para la URL del script. Ver respuesta actualizada. – CfSimplicity