首页 > 解决方案 > 将coldfusion / html页面呈现为docx扩展而不是doc扩展时出现问题

问题描述

我正在使用 ColdBox / ORM 编写应用程序。对于我的问题,我正在尝试使用 .docx 文件扩展名而不是 .doc 文件扩展名呈现/下载 HTML 代码。下载呈现的文档并尝试打开它时,我收到一个弹出窗口说

Word 在 *********** 中发现了不可读的内容。是否要恢复此文档的内容?

.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文件中并能够打开和查看它。实际发生的情况是我收到一些弹出窗口,提示“Word 在 中找到不可读的内容***********。您要恢复此文档的内容吗?” 带有是/否按钮。即使选择是,我也看不到文件的内容。但是,当前代码成功呈现为.doc我可以查看/打开的文件。

标签: htmlcoldfusiondocxdoccoldbox

解决方案


正如@Ageax 提到的,docx 是一个复杂得多的文件。它们实际上是 zip 文件。如果您获取 .docx 并将其重命名为 .zip,您可以打开它并检查 .docx 中实际包含的内容。您应该在 zip 的 /word/document.xml 文件中找到内容。与其尝试从头开始创建一个,不如为您尝试使用占位符创建的文档设置一个模板。您可以解压缩模板,使用您的数据编辑 document.xml 文件,压缩并重命名为 docx。


推荐阅读