尽管在cfsavecontent中,但服务器仍在服务Cfdocument

时间:2013-09-11 08:14:46

标签: coldfusion coldfusion-8 cfdocument

当我使用<cfsavecontent>标签时,它的输出似乎是由服务器提供的(没有输出变量),这对我来说有点挫败了{{1}的目的}。

如果这很重要:我的应用程序使用ColdSpring,ModelGlue和Transfer ORM。

这是函数中的示例代码:

<cfsavecontent>

模板:

<cfsavecontent variable="testvar">
<cfinclude template="test.cfm" />
</cfsavecontent>
<cfreturn testvar>

我的浏览器(谷歌浏览器)正在解析PDF内容,而视图甚至没有被加载。我怎样才能最好地防止这种情况发生?

只是为了澄清:我还没有在此代码中输出<cfdocument format="PDF" pagetype="A4" orientation="portrait" unit="cm"> <cfoutput> <!--- PDF content here ---> </cfoutput> </cfdocument> 变量,但它似乎无论如何都会在浏览器中加载模板。

3 个答案:

答案 0 :(得分:8)

要实现您尝试做的事情,您是否应该只使用<cfdocument>name属性将PDF数据放入变量中,而不是尝试{{1它呢?

披露:除了概念验证代码和测试之外,我从未使用过<cfsavecontent>,但这是我从文档中推断的内容。

答案 1 :(得分:2)

由于我还需要合并多个PDF文档,因此我最终执行了以下操作。非常感谢Adam Cameron为我的初始问题提供解决方案。

  • 在模板文件中,我使用带有<cfdocument>属性的name标记将PDF保存在变量中(感谢Adam Cameron)
  • 然后,我将所有PDF文档以二进制格式存储在数组中
  • 在我看来,我使用<cfpdf>的{​​{1}}动作并使用cfloop将PDF文档合并在一起,在其中循环遍历数组。
  • 最后,我使用merge并使用<cfcontent>
  • 变量属性来显示内容

这让我到了我的位置。

答案 2 :(得分:1)

cfinclude将处理test.cfm页面,您配置cfdocument的方式将导致浏览器中“打开”pdf文档。 您可以通过在光盘上保存文件来阻止打开此文件:

<cfdocument format="PDF" pagetype="A4" orientation="portrait" unit="cm" filename ="test.pdf" overwrite ="yes">

但这不会阻止在cfcontent标记中执行cfinclude,它只会阻止在浏览器中打开。

您可以将cfinclude视为对服务器的请求,它将始终执行。

解决方案是在您实际想要生成pdf的那一刻,在test.cfm文件上调用包含cfdocument的请求。

示例:在客户端上使用javascript调用报告服务,该服务将生成并使用pdf报告弹出屏幕。

希望这有帮助。