在 Word Javascript API 中调用 context.application.createDocument 时出现 GeneralException

Posted

技术标签:

【中文标题】在 Word Javascript API 中调用 context.application.createDocument 时出现 GeneralException【英文标题】:GeneralException when context.application.createDocument is called in Word Javascript API 【发布时间】:2018-08-15 15:47:44 【问题描述】:

背景

目前我正在开发一个 Word 加载项,它使用 Office 的新 javascript API。该插件由一些基本功能和一个数字模板组成。客户的愿望之一是从功能区打开模板。目前我有一个命令加载项下拉菜单,其中每个下拉菜单项都引用加载项函数文件中的一个函数。这些函数依次调用一些 Word Javascript API 方法,从 .docx 文件中读取并打开 base64 字符串。

问题

打开简单的文件没有任何问题,但是包含图像、内容控件等的更复杂的文件会失败。更复杂的文件会引发“GeneralException”。 this issue 的作者声明它与文档中包含的图像有关。但是,这与我的个人经历不符。可以添加图像,并且文档仍处于打开状态。所以我认为文档的其他部分可能会引发问题,但我不确定!

因此,我想知道是否有人能够进一步阐明这个问题。

代码

            Word.run(function(context) 
                let letterTemplate = context.application.createDocument(<base64string>);
                letterTemplate.open();

                return context.sync().then(function () 
                    console.log("success");
                )
                .catch(function (error) 
                    console.log(error);
                )
            );

欢迎任何帮助、提示或建议。

编辑:发现问题

经过一些实验,我得出以下结论。每当将(在本例中为富文本)内容控件添加到文档的标题时,就无法使用方法context.application.createDocument 打开它。尝试这样做将导致“GeneralException”,它确实提供了任何特定信息。我怀疑这是 Office Javascript API 中的一个错误。

【问题讨论】:

【参考方案1】:

如果你在做word online那么请检查你的base64是否大于4M。目前大于 4M 的 base64 将失败并出现 GeneralException。我们正在积极改进限制。

【讨论】:

很遗憾,我没有使用 Word Online。但是我发现了一个问题,当一个内容控件被添加到一个文档的头部时,这个文档是不能用context.application.createDocument方法打开的。 我们也体验过。 Word版本似乎是相关的。在每月频道中,createDocument 方法有效,但在 Insider 版本(1803、1804)中,createDocument 方法会引发一般异常

以上是关于在 Word Javascript API 中调用 context.application.createDocument 时出现 GeneralException的主要内容,如果未能解决你的问题,请参考以下文章

Office.js/Word Javascript API 中的 insertOoxml 方法中的错误

ExcelVBA如何调用API DLL(Delphi生成)

无法在 JavaScript 中调用 api(跨源)

WebAPP,API调用Excel, Word,Bartender等DCOM, VS调试没问题,发布到IIS出错

如何在 Javascript 中格式化 HTTP API 调用?

如何在Javascript中进行rest API调用[重复]