如何获得cfdocument的输出

时间:2018-07-19 17:30:18

标签: pdf coldfusion cfdocument

这是一些简单的cfdocument代码(在Application.cfm中设置了reppath):

<cfset xx = "let">
<cfdocument format = "pdf" name = "let" filename = "#reppath#/#xx#.pdf"         overwrite = 'true' >
Here is some stuff

</cfdocument>

<cflocation url = '#xx#.pdf'>

原始问题(已回答):现在-如何显示和/或将其存储为文件?我一直在互联网上寻找这个简单问题的答案。到目前为止,我发现的很少-关于cfdocument的所有信息,但是没有关于如何获取结果的信息。我发现的一些提示不起作用。

当前问题:该代码现在既打开文档,又将其存储为let.pdf。但是,当我尝试在文档查看器中打开let.pdf时,会收到此消息。我正在使用Linux / Ubuntu。

unable to open

它在Firefox中可以正常打开。

1 个答案:

答案 0 :(得分:0)

不确定为什么会收到该错误。特别是在仅一种浏览器中。可能是权限问题,或者文件正在其他地方使用?

无论如何,请尝试使用name属性以临时文件名将pdf保存到磁盘,而不是使用file属性(as in original question)。然后使用cfheadercfcontent将pdf返回浏览器,并在完成后清除临时文件。

downloadPDF.cfm

<!--- User friendly file name to display in download --->
<cfset fileNameToDisplay = "let.pdf">
<!--- Unique temp file name --->
<cfset saveToFile = ExpandPath("./"& createUUID() &".pdf")>

<!--- generate and save pdf --->
<cfdocument format="PDF" filename="#saveToFile#" overwrite="Yes">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Hello World</title>
</head>
<body>
    Hello World
</body>
</html>
</cfdocument>

<!--- displays download prompt and deletes temp file --->
<cfheader name="Content-Disposition" value="attachment;filename=#fileNameToDisplay#">
<cfcontent type="application/pdf" file="#saveToFile#" deletefile="Yes">

要触发下载,只需将超链接添加到单独的页面。单击后,它将显示标准的“另存为/打开文件”对话框。由于下载页面是.cfm文件,因此可以将任何必要的参数添加到链接URL,例如。 downloadPDF.cfm?param1=xxx&param2=yyyy

<a href="downloadPDF.cfm">Download PDF</a>