我正在尝试动态创建一个内联 PDF,当用户选择保存它时,会提示我的自定义文件名。根据文档,该saveasname
属性应该做我想要的。
(仅 format="PDF")当用户保存写入浏览器的 PDF 文件时出现在“另存为”对话框中的文件名。
但是,在 IE 9 和 Firefox 13.0.1 中发生的情况是,SaveAs 对话框中显示的文件名与我的 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 做他们应该做的事情吗?其他浏览器会这样做吗?移动Safari?