这是一些简单的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。
它在Firefox中可以正常打开。
答案 0 :(得分:0)
不确定为什么会收到该错误。特别是在仅一种浏览器中。可能是权限问题,或者文件正在其他地方使用?
无论如何,请尝试使用name
属性以临时文件名将pdf保存到磁盘,而不是使用file
属性(as in original question)。然后使用cfheader和cfcontent将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¶m2=yyyy
<a href="downloadPDF.cfm">Download PDF</a>