javascript - hdr.insertOoxml 第一次不起作用

标签 javascript openxml office-js word-addins

当我将此加载项部署到 MS Word 应用程序时,我必须多次单击该按钮才能最终使 hdr.insertOoxml() 成功运行。有时不得不点击这个功能超过 4 次(见下面的代码)。虽然,这似乎在 Word 365 的网络版本中工作得更好(尽管仍然不完美)。请指教,谢谢!

function applyletterhead() {
    Word.run(function (context) {


        var departmentLH = document.getElementById("lh-department").options[document.getElementById("lh-department").selectedIndex].value;


        var sameLHCB = document.getElementById("sameLH");
        var secondHT = document.getElementById("secondH").value;

        if (sameLHCB.checked === true) {
            toDataURL(departmentLH + '_First.png', function (dataUrl) {
                var myOOXMLRequest = new XMLHttpRequest();
                var myXML;
                myOOXMLRequest.open('GET', '_SP_letterhead_First.xml', false);
                myOOXMLRequest.send();
                if (myOOXMLRequest.status === 200) {
                    myXML = myOOXMLRequest.responseText;
                    myXML = myXML.replace('#####secondH#####', secondHT);
                    myXML = myXML.replace('#####imagepath#####', dataUrl.replace('data:image/png;base64,', ''));
                }
                let hdr = context.document.sections.getFirst().getHeader("Primary"); //returns Word.Body type
                hdr.clear();
                hdr.insertOoxml(myXML, 'Replace');
            });
        }
        else {
            toDataURL(departmentLH + '_First.png', function (dataUrl) {
                var myOOXMLRequest = new XMLHttpRequest();
                var myXML;
                myOOXMLRequest.open('GET', '_SP_letterhead_First.xml', false);
                myOOXMLRequest.send();
                if (myOOXMLRequest.status === 200) {
                    myXML = myOOXMLRequest.responseText;
                    myXML = myXML.replace('#####secondH#####', secondHT);
                    myXML = myXML.replace('#####imagepath#####', dataUrl.replace('data:image/png;base64,', ''));
                }
                let hdr = context.document.sections.getFirst().getHeader("FirstPage"); //returns Word.Body type
                hdr.clear();
                hdr.insertOoxml(myXML, 'Replace');
                console.log("First: ", myXML);
            });

            toDataURL(departmentLH + '_Primary.png', function (dataUrl) {
                var myOOXMLRequest = new XMLHttpRequest();
                var myXML;
                myOOXMLRequest.open('GET', '_SP_letterhead_Primary.xml', false);
                myOOXMLRequest.send();
                if (myOOXMLRequest.status === 200) {
                    myXML = myOOXMLRequest.responseText;
                    myXML = myXML.replace('#####secondH#####', secondHT);
                    myXML = myXML.replace('#####imagepath#####', dataUrl.replace('data:image/png;base64,', ''));
                }
                let hdr = context.document.sections.getFirst().getHeader("Primary"); //returns Word.Body type
                hdr.clear();
                hdr.insertOoxml(myXML, 'Replace');
                console.log("Primary: ", myXML);
            });
        }

最佳答案

hdr.insertOOXML 的第一个和最后一个调用下方添加一个 return context.sync() 调用。

关于javascript - hdr.insertOoxml 第一次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57666326/

相关文章:

javascript - 我应该如何获取整数 GMT 时间

c# - 修复记录 : Cell information from worksheet created from scratch

c# - 使用 OpenXML 和 Regex 在 Word Docx 中查找和替换撇号 ( ' ) 时出现问题

javascript - HTML5 音频捕获 - 如何 chop 录制的音频

javascript - Node.js Express 不能使用路由

javascript - 当我在我的 Word 插件应用程序中使用 Promise 时出现 Promise 未定义错误

javascript - 在 Outlook for Mac 上插入图片

ios - iOS 上 OfficeJS Outlook 加载项的侧载问题

javascript - Node.JS通用 cometd 查询

c# - OpenXML 中的 CellValues.InlineString 和 CellValues.String 有什么区别?