将 CFM 页面下载为 Word 文档
Download CFM page as Word Doc
我正在尝试使用 cfinclude
将 .cfm 的输出呈现为 Word 文档,如下所示:
<cfheader name="content-disposition" value="attachment; filename=""MyDocument.doc""" />
<cfcontent type="application/msword" reset="true">
<cfinclude template="PageToDownload.cfm">
由于 cfinclude
将 .cfm 输出为 html,这在理论上应该可行。但是,这样做会下载一个文档,该文档在 Word 中出现错误“A text/xml 声明可能仅在输入的最开始出现。”我用 Notepad++ 检查了下载的文档,并在顶部看到了这个:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
如果我删除空行、?xml 和 !DOCTYPE(基本上删除了 <html
之前的所有内容),此文档将在 Word 中打开。是否可以剥离 xml 和 DOCTYPE 标签并使用 cfinclude
从 <html
开始?或者,我应该采取另一种方法吗?
使用您的技术,您可以使用 <cfsavecontent>
将 PageToDownload.cfm
的内容放入变量中。一旦内容在所述变量中,您可以在开始 <html>
标记之前去掉所有内容,然后在 <cfheader>
和 <cfcontent>
语句之后 <cfoutput>
该变量。
您的代码可能如下所示。
<!--- Save contents of file to download into fileContents variable --->
<cfsavecontent variable="fileContent">
<cfinclude template="PageToDownload.cfm">
</cfsavecontent>
<!--- Strip out contents prior to the opening <html> tag --->
<cfset pos = findNoCase("<html", fileContent)>
<cfset fileContent = mid(fileContent, pos, 1000000)>
<!--- Output fileContent after the header statements --->
<cfheader name="content-disposition" value="attachment; filename=""MyDocument.doc""" />
<cfcontent type="application/msword" reset="true">
<cfoutput>#fileContent#</cfoutput>
我正在尝试使用 cfinclude
将 .cfm 的输出呈现为 Word 文档,如下所示:
<cfheader name="content-disposition" value="attachment; filename=""MyDocument.doc""" />
<cfcontent type="application/msword" reset="true">
<cfinclude template="PageToDownload.cfm">
由于 cfinclude
将 .cfm 输出为 html,这在理论上应该可行。但是,这样做会下载一个文档,该文档在 Word 中出现错误“A text/xml 声明可能仅在输入的最开始出现。”我用 Notepad++ 检查了下载的文档,并在顶部看到了这个:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
如果我删除空行、?xml 和 !DOCTYPE(基本上删除了 <html
之前的所有内容),此文档将在 Word 中打开。是否可以剥离 xml 和 DOCTYPE 标签并使用 cfinclude
从 <html
开始?或者,我应该采取另一种方法吗?
使用您的技术,您可以使用 <cfsavecontent>
将 PageToDownload.cfm
的内容放入变量中。一旦内容在所述变量中,您可以在开始 <html>
标记之前去掉所有内容,然后在 <cfheader>
和 <cfcontent>
语句之后 <cfoutput>
该变量。
您的代码可能如下所示。
<!--- Save contents of file to download into fileContents variable --->
<cfsavecontent variable="fileContent">
<cfinclude template="PageToDownload.cfm">
</cfsavecontent>
<!--- Strip out contents prior to the opening <html> tag --->
<cfset pos = findNoCase("<html", fileContent)>
<cfset fileContent = mid(fileContent, pos, 1000000)>
<!--- Output fileContent after the header statements --->
<cfheader name="content-disposition" value="attachment; filename=""MyDocument.doc""" />
<cfcontent type="application/msword" reset="true">
<cfoutput>#fileContent#</cfoutput>