【发布时间】:2015-03-02 03:01:56
【问题描述】:
我们有一个应用程序,我们在 ColdFusion 服务器上生成一个 .doc 文件。该文件在 MSWord 中正确打开并正确显示。
在 Internet Explorer 中,它询问我是下载还是保存文件。保存时,文件在我的下载文件夹中保存为file.doc,是正确的。
直接从 Internet Explorer 打开时,文件会正确显示。但是当我在 MSWord 中“另存为”时,默认文件类型是“网站”而不是“word 文档”。
这是单词的内容。我知道有更好的解决方案,但我们当时就是这样做的。
<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'>
<head>
<title>file name goes here</title>
<!--[if gte mso 9]>
<xml>
<w:WordDocument>
<w:View>Print</w:View>
<w:Zoom>90</w:Zoom>
<w:DoNotOptimizeForBrowser/>
</w:WordDocument>
</xml>
<![endif]-->
<style>/*style goes here*/</style>
</head>
<body>body goes here</body>
</html>
我曾尝试添加文档类型,但没有任何反应。
在 ColdFusion 上,会发生以下情况:
<cfcontent reset="true" type="application/vnd.ms-word" />
#wordContent#
<cfheader name="Content-Disposition" value="attachment; filename=file.doc" />
我也尝试过将“application/msword”作为 MIME-Type,但没有任何反应。
我曾尝试将其设为 .docx,但随后它的格式错误,这似乎合乎逻辑,因为它不是 xml 而是 html。
我希望,可能有一些元信息,它允许我访问默认文件名,例如
<o:Author>Author name goes here</o:Author>
<o:LastAuthor>Last authors name goes here</o:LastAuthor>
<o:Revision>1</o:Revision>
<o:Created>#dateFormat(now(),"yyyy-mm-dd")#T#timeFormat(now(),"HH:mm")#Z</o:Created>
<o:LastSaved>#dateFormat(now(),"yyyy-mm-dd")#T#timeFormat(now(),"HH:mm")#Z</o:LastSaved>
<o:Version>12.00</o:Version>
</o:DocumentProperties>
我也玩过这里给出的信息http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats
但它们似乎都不起作用。所以我在这里寻求帮助。
编辑:添加 MSWord 行为错误的屏幕截图(德语)
【问题讨论】:
-
只是你的文件名有问题吗?试试这个:
一些浏览器也喜欢用引号括起来的文件名。 -
@steve 不幸的是,这不起作用。但是非常感谢您提供的额外信息,但对此一无所知。
-
老实说,我认为无法更改默认的“另存为类型”值。虽然您可以欺骗浏览器使用 MS Word 打开内容,但程序本身仍然足够智能,可以识别内容是 HTML。因此它相应地设置了默认的“另存为”文件类型。 (此行为可能是 Office 2007 中扩展强化更改的一部分,我不确定)。无论如何,您仍然可以手动选择
.doc文件类型。这可能与使用这样的伪字文件一样好。 -
@Leigh 这很有道理,但我希望会有不同的解决方案。非常感谢。
-
另一种解决方案是提供实际的 Word 文档,而不是将内容包装在 HTML 标记中。
标签: coldfusion ms-word