IE 9 和 Firefox 13 中的内容处置被忽略

2023-12-29

我正在尝试动态创建一个内联 PDF,当用户选择保存它时,会提示我的自定义文件名。根据文档 http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c21.html, the saveasname属性应该做我想要的。

(仅限格式=“PDF”)当用户保存写入浏览器的 PDF 文件时,“另存为”对话框中显示的文件名。

然而,在 IE 9 和 Firefox 13.0.1 中,“另存为”对话框中显示的文件名与我的 CF 模板相同,但带有 PDF 扩展名。 (换句话说,我的代码在makepdf.cfmSaveAs 提示我保存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?


问题似乎是“filename=xxx”实际上是用于“附件”配置的,并且并非所有浏览器 PDF 插件都将其识别为指定内联“另存为”的机制,正如您所发现的。

让它们全部使用您首选的文件名的另一种方法是使用 Web 服务器重写规则来操作 URL。作为一个简单的示例,您将拥有用于生成 pdf 并内联提供它们的脚本:pdf.cfm

<cfheader name="Content-Disposition" value="inline">
<cfdocument format="PDF" mimetype="application/pdf">Test</cfdocument>

然后创建一个与表单中的 URL 匹配的重写规则/pdf/我的文件名并将它们传递给pdf.cfm。在 IIS7 上,这可能是:

<rule name="Inline PDF SaveAs" stopProcessing="true">
    <match url="^/pdf/[\w-]+$" ignoreCase="true" />
    <action type="Rewrite" url="/pdf.cfm" appendQueryString="false" />
</rule>

这将匹配仅包含字母数字、下划线和连字符的文件名。您不想允许空格或无效的文件名字符。

当您访问/pdf/我的报告PDF将由插件内联显示,当您保存它时,默认文件名将是我的报告.pdf.

如果您使用的框架支持搜索引擎安全 URL 或“路由”,您可以执行相同的操作,而无需重写 Web 服务器。

更新:事实上,您不需要使用 URL 重写:只需在 CF 脚本 URL 中附加一个正斜杠,然后添加所需的文件名,例如

/pdf.cfm/myreport

该插件将使用最后一个斜杠后面的任何内容作为“另存为...”名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IE 9 和 Firefox 13 中的内容处置被忽略 的相关文章

随机推荐

  • 这个严格的别名示例正确吗?

    在过去的一周左右的时间里 我一直在阅读严格的别名规则 并遇到了这篇文章 了解 C C 严格别名 http dbp consulting com tutorials StrictAliasing html 本文介绍了几种交换 32 位整数的一
  • 打开模板文件时自动显示表单,来自资源管理器的 dotm

    我编写了一个基于表单的文档生成宏 用 VBA 编写 以便分发给销售团队 为了便于使用 我想提供一个独立的文件 该文件在打开文档后将立即显示该表单 使用 AutoOpen 如果 word 已经打开并且 dotm 文件已在其中打开 我可以让表单
  • 哪些 Google OAuth2 范围被视为“敏感”的列表在哪里?

    据我了解 Google OAuth2 范围大致分为三个部分 按从最难获准使用到最难的顺序排列 限制范围 灵敏范围 其他一切 我在这里找到了限制范围列表 https support google com cloud answer 911091
  • 如何在 pandas 中创建“排名”列?

    我正在尝试对专栏进行排名 col 1 在熊猫中 如果有平局 我想看另一栏 col 2 只是为了那些记录并打破平局 如果即使在该列中它们也相同 我只想随机分配排名 但每一行必须有唯一的排名 Example col1 col 2 Rank 20
  • 刷新 iFrame(缓存问题)

    我们遇到了一个奇怪的问题 我们不确定到底是什么原因造成的 让我详细说明一下这个问题 假设 我们有两个不同的html页面a html和b html 还有一个用index html编写的小脚本
  • 品牌形象太大且在 Bootstrap 导航栏上未对齐

    我的网站上的导航栏品牌出现一些问题 我希望它看起来垂直对齐并且尺寸较小 您能否建议如何实现这一点 div class navbar navbar default navbar fixed top style background color
  • Windows Powershell - 使用文本文档中的列表重命名文件列表

    我尝试使用以下代码重命名文件文件夹 C www folderx 使用文本列表 list txt 但我不知道如何获取当前文件索引 Get Childitem C www folderx OldName name NewName GC list
  • 使用 iText 从 pdf 文件获取文本字体

    我一直在尝试使用 iText 库提取 pdf 文档中每个单词的属性 字体 字体大小 颜色等 我可以从每个页面中提取文本 但不能提取属性 我也没有找到任何可以提供相同功能的东西 请帮我 我不是 Java 人员 所以我无法为您提供工作代码 但希
  • jsp PageContext 对象的生命周期是怎样的 - 它是线程安全的吗?

    jsp PageContext 对象是作为 http 请求 响应周期的一部分创建和销毁的 还是在请求之间缓存和重用 PageContext 具有建议在请求之间重用的生命周期方法 即初始化 释放 如果重用它们 可能会造成严重的并发问题 如果两
  • 在运行时设置 ImageView 的大小(以 px 为单位)

    我想使用整个可用宽度将 8 个图像拇指放在一条水平线上 这些图像是从网络服务中检索的 它允许我指定尺寸 我尝试了以下方法 int widthPx container getWidth LinearLayout thumbs LinearLa
  • 如何将自定义对象转换为 Data Swift

    我有一个自定义结构 它的类型属性是其他具有不可编码类型的结构 它是结构中结构的复杂树 我需要将其转换为数据以便保存它 我需要保存这个结构 聊天 struct Chat var dictOfRecentMessages String Mess
  • 如何将 Observable.FromEvent 与静态事件一起使用?

    我正在尝试使用反应式扩展编写代码来处理异步调用 其中启动方法和完成的事件都是静态的 我不能使用 var languageSetsLoaded Observable FromEvent
  • 向文本区域添加水印

    如何为文本区域添加 输入文本区域 等水印
  • 在 perl 中匹配日期

    我想匹配日 月 年格式的日期 其中日是两位数 月份是两位数 年份是四位数 另外 我想检查它是否是一个有效的日期 例如知道什么时候是闰年 并知道哪个月份有 30 天 31 天和 28 天或 29 天的二月 看看类似的东西日期 马尼普 http
  • 如何在 Maven 中为生成的源创建文件夹?

    我必须使用 wsimport 生成源 并且我假设它应该转到 target generated sources wsimport 而不是 src main java 问题是 wsimport 需要在执行之前创建目标文件夹 但它失败了 我可以先
  • 在 PyCharm 中安装气流包附加功能

    我想用Airflow https airflow incubator apache org 包裹extras https packaging python org installing installing setuptools extra
  • 启用 ActiveX 控件以引发事件,而无需在 System.Windows.Forms.Application 中运行

    我们的团队正在编写一些需要我们与网络设备交互的代码 该设备使用专有协议 制造商以OCX控件 即ActiveX控件 的形式向我们提供了接口库 我在尝试使用 ActiveX 控件时遇到了几次错误 例如使用包装在 C CLI 中的本机 C MFC
  • Sql Server 2008 sp_executesql 语法帮助 - 我认为我的引用不正确

    使用 SQL Server 2008 我尝试构建一个字符串并使用 sp executesql 执行它 我显然有一些引用是错误的 它似乎正在运行 但数据库并未删除 有人可以帮我纠正语法吗 USE master GO DECLARE sql N
  • 随机数表现得很奇怪,不是完全随机的

    在我的 NET 游戏中 我的 rand 函数决定玩家的五个角色中的每个角色应承受多少伤害 但是第一个角色似乎总是位于标度的底部 而最后一个角色则位于顶部 所以在我的Character 0 伤害很少比最小兰特值大 1 以上 并且对于每个Cha
  • IE 9 和 Firefox 13 中的内容处置被忽略

    我正在尝试动态创建一个内联 PDF 当用户选择保存它时 会提示我的自定义文件名 根据文档 http help adobe com en US ColdFusion 9 0 CFMLRef WSc3ff6d0ea77859461172e081