我正在使用ColdBox / ORM编写应用程序。对于我的问题,我正在尝试使用.docx文件扩展名而不是.doc文件扩展名呈现/下载HTML代码。下载呈现的文档并尝试打开它时,我收到一个弹出窗口,显示
单词在***********中发现不可读的内容。你想恢复吗 该文件的内容?
.cfm页面
在我要呈现的文件中,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"
.cfc页面
原始代码
event.renderData(data=fileReadBinary('fileName.doc')
, contentType='application/msword'
, isBinary=true);
新代码
event.renderData(data=fileReadBinary('fileName.docx')
, contentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document'
, isBinary=true);
我的预期输出是将.cfm
文件的内容呈现在.docx
文件中,并能够打开和查看它。实际发生的是,我弹出一个窗口,说“单词在***********
中发现了不可读的内容。您要恢复此文档的内容吗?” 使用是/否按钮。即使选择是,我也看不到文件的内容。但是,当前代码已成功呈现为.doc
文件,我可以查看/打开该文件。
答案 0 :(得分:0)
contentType='application/vnd.openxmlformats-...etc...'
仅声明 内容为docX文件,不会神奇地将其转换为一个;-)。 docX文件的结构与HTML完全不同。这是一个压缩的存档,其中包含一堆单独的XML文件。当MS Word尝试解析内容时,找不到所需的存档和目录结构。这就是为什么您会遇到错误。
尝试使用原始内容类型application/msword
。我不使用ColdBox,但是更改内容类型可使用普通的<cfcontent>
和<cfheader>
(将文件名声明为.docX
)。
答案 1 :(得分:0)
正如@Ageax提到的,docx是一个复杂得多的文件。它们实际上是zip文件。如果您使用.docx并将其重命名为.zip,则可以将其打开并检查.docx中实际包含的内容。您应该在zip的/word/document.xml文件中找到内容。与其尝试从头开始创建一个模板,不如想为要使用占位符创建的文档设置模板。您可以解压缩模板,使用数据编辑document.xml文件,压缩并重命名为docx。