【问题标题】:How to set file name displayed in "Save As..." dialog for dynamic PDF displayed in iframe如何为 iframe 中显示的动态 PDF 设置“另存为...”对话框中显示的文件名
【发布时间】:2018-04-10 19:55:16
【问题描述】:

我在 ColdFusion 中动态生成 pdf,因此我们的服务器上没有实际的 PDF。每次用户点击“下载”时,它都会通过打开另一个浏览器窗口来动态创建 PDF,在创建 pdf 的窗口中使用<iframe>

但是,我不确定如何更改用户单击“另存为..”时显示的实际文件名。目前,显示的文件名是用于生成 pdf 的 .cfm 文件的名称,例如my_pdf_generated.pdf。理想情况下,我希望文件的名称中有一个日期,例如my_pdf_generated_040918.pdf,但我似乎找不到如何做到这一点。

这是当用户单击“下载 pdf”时在单独的浏览器窗口中运行的代码。

<div class="title">
  Loading your pdf. Your document may take a few moments to 
  load. Once it's loaded, you can save it to your device.</div>
  <cfflush>
  <iframe src="property_valuation.cfm?valco=<cfoutput>#URL.ValCo#</cfoutput>" 
      width="100%" height="100%" >
   </iframe>
</div>

property_valuation.cfm:

... other code ...
<cfdocument format="pdf"  margintop="1.0" marginbottom=".75" >
<html>
<head></head>
<body>
   ... generate pdf content here ...
</body>
</html>
</cfdocument>

【问题讨论】:

  • 您忘记发布相关代码(代码生成 pdf 以供下载,... property_valuation.cfm)。您是否按照this older thread 中的建议使用&lt;cfheader&gt;
  • 谢谢,成功了!我在上面发布了工作代码。
  • iframe 的用途是什么?
  • @TassTimes - 自 S.O.是一个问答网站,您应该在“问题”中发布非工作代码,并将工作代码作为单独的“答案”发布。此外,property_valuation.cfm 中与此特定问题真正相关的唯一代码是 &lt;cfdocument&gt; 标记。其余的可以删除。
  • @TassTimes - 发布您的工作代码作为答案并接受它

标签: pdf iframe coldfusion


【解决方案1】:

答案如下:

我缺少一个 CFHEADER 语句,该语句允许用户右键单击“另存为...”时将使用的文件名参数。您还可以将变量设置为日期和时间,并将该变量包含在文件名中以使其唯一。

property_valuation.cfm:

<cfheader name="content-disposition" value="inline; filename=mypdf.pdf"/>

【讨论】:

  • 如果 A) 只包含相关代码,这将有助于其他人更好地理解解决方案,这只是 2 行 (cfheader + cfdocument) 并且 b) 还包含对 why 的简要说明 它奏效了。 (我会自己编辑,但肯定会因为“过于激烈”而被拒绝;-)
  • 根据您的建议全部设置。
  • 看起来不错,谢谢!其他人更容易跟随。
猜你喜欢
  • 2012-10-22
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 2015-07-13
相关资源
最近更新 更多