【问题标题】:Trouble rendering coldfusion / html page as a docx extension rather than a doc extension将coldfusion / html页面呈现为docx扩展而不是doc扩展时出现问题
【发布时间】:2020-01-10 17:46:46
【问题描述】:

我正在使用 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 文件,我可以查看/打开该文件。

【问题讨论】:

    标签: html coldfusion docx doc coldbox


    【解决方案1】:

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

    【讨论】:

    • 我也是这么想的。但是,在某些情况下,显然 Word 可能会split text across multiple tags。因此,对 {placeholder} 的简单搜索和替换可能会失败。这是一种耻辱,因为它是简单而优雅的解决方案。
    猜你喜欢
    • 2016-03-27
    • 2012-08-20
    • 2012-05-27
    • 1970-01-01
    • 2015-05-17
    • 2020-07-04
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多