Я пытаюсь динамически создать встроенный PDF-файл, который, когда пользователь решит сохранить его, запрашивает мое собственное имя файла. Согласно документации, атрибут saveasname
должен выполнять что я хочу.
(только format="PDF") Имя файла, которое появляется в диалоговом окне "Сохранить как", когда пользователь сохраняет файл PDF, записанный в браузере.
Однако как в IE 9, так и в Firefox 13.0.1 происходит то, что имя файла, отображаемое в диалоговом окне «Сохранить как», совпадает с моим шаблоном CF, но с расширением PDF. (Другими словами, мой код находится в makepdf.cfm
, а SaveAs предлагает мне сохранить makepdf.pdf
.) Однако в Chrome он работает отлично. (Все на Windows 7.)
Вот мой код для создания PDF:
<cfdocument format="pdf" bookmark="true" saveasname="MyReport.pdf">
Если я явно объявлю расположение контента и тип контента, например
<cfheader name="Content-Disposition" value="inline; filename=MyReport.pdf">
<cfcontent type="application/x-pdf">
<cfdocument format="pdf" bookmark="true" saveasname="MyReport.pdf">
- Chrome сообщает мне, что «Content-Disposition» был объявлен дважды
- Firefox сообщает мне, что файл PDF поврежден
- IE просто игнорирует его (и по-прежнему не показывает правильное имя файла)
Если я просто полагаюсь на заголовок
<cfheader name="Content-Disposition" value="inline; filename=MyReport.pdf">
<cfcontent type="application/x-pdf">
<cfdocument format="pdf" bookmark="true">
Я получаю то же поведение, что и первый фрагмент кода.
Я знаю, как заставить браузер запрашивать загрузку, а не отображать встроенный, и тогда все работает, как и ожидалось, но это не желаемое поведение.
Мне нужно использовать время и дату в именах файлов, а конечные пользователи недостаточно сообразительны, чтобы не перезаписывать свои файлы (если они захотят их сохранить).
Есть ли что-то, что я упускаю, что заставит IE и Firefox делать то, что они должны делать? Какие другие браузеры будут делать это? Мобильное сафари?