Page 1 of 1

Microsoft word add in is not loading automatically

PostPosted: Thu Dec 29, 2022 7:13 pm
by saravanaprabhusr
Recently I added some code to add a web extension to the word docx file. But once the change is done. its not loading the add in automatically. I am trying to achieve the part mentioned in this document https://learn.microsoft.com/en-us/office/dev/add-ins/develop/automatically-open-a-task-pane-with-a-document#use-open-xml-to-tag-the-document

Code: Select all
WebExtensionPart webExtensionPart = new WebExtensionPart(new PartName("/word/webextensions/webextension.xml"));
        webExtensionPart.setPackage(opcPackage);

        CTOsfWebExtension ctOsfWebExtension = new CTOsfWebExtension();
        ctOsfWebExtension.setId("635BF0CD-42CC-4174-B8D2-6D375C9A759E");
        CTOsfWebExtensionReference ctOsfWebExtensionReference = new CTOsfWebExtensionReference();
        ctOsfWebExtensionReference.setId("WA104380862");
        ctOsfWebExtensionReference.setVersion("1.5.0.0");
        ctOsfWebExtensionReference.setStore("en-US");
        ctOsfWebExtensionReference.setStoreType("OMEX");
        ctOsfWebExtension.setReference(ctOsfWebExtensionReference);

        CTOsfWebExtensionPropertyBag bag = new CTOsfWebExtensionPropertyBag();
        CTOsfWebExtensionProperty prop = new CTOsfWebExtensionProperty();
        prop.setName("Office.AutoShowTaskpaneWithDocument");
        prop.setValue("true");
        bag.getProperty().add(prop);


        // bag.setProperty(prop); <-- no setter for properties available

        ctOsfWebExtension.setProperties(bag);
        webExtensionPart.setContents(ctOsfWebExtension);
        CTOsfWebExtensionBindingList ctOsfWebExtensionBindingList = new CTOsfWebExtensionBindingList();
        CTOsfWebExtensionBinding ctOsfWebExtensionBinding = new CTOsfWebExtensionBinding();
        ctOsfWebExtensionBindingList.getBinding().add(ctOsfWebExtensionBinding);
        ctOsfWebExtension.setBindings(ctOsfWebExtensionBindingList);
        doc.addTargetPart(webExtensionPart);
        addTaskPane(docxFile, opcPackage, doc, ctOsfWebExtension);

  private void addTaskPane(File docxFile, OpcPackage opcPackage, WordprocessingMLPackage doc, CTOsfWebExtension ctOsfWebExtension) throws Docx4JException {
        TaskpanesPart taskpanesPart = addWebTaskPaneContent();
        taskpanesPart.setPackage(opcPackage);
        CTBlip snapshot = new CTBlip();
        ctOsfWebExtension.setSnapshot(snapshot);
        doc.addTargetPart(taskpanesPart);
        RelationshipsPart relationshipsPart = RelationshipsPart.createRelationshipsPartForPart(taskpanesPart);
        Relationship relationship = new Relationship();
        relationship.setId("Rb0860d496d59410f");
        relationship.setTarget("/word/webextensions/webextension.xml");
        relationship.setType("http://schemas.microsoft.com/office/2011/relationships/webextension");
        relationship.setParent(relationshipsPart);
        relationshipsPart.addRelationship(relationship);
        doc.save(docxFile);
    }

    TaskpanesPart  addWebTaskPaneContent() throws InvalidFormatException {
        TaskpanesPart taskpanesPart = new TaskpanesPart(new PartName("/word/webextensions/taskpanes.xml"));
        CTOsfTaskpane ctOsfTaskpane = new CTOsfTaskpane();
        ctOsfTaskpane.setDockstate("right");
        ctOsfTaskpane.setVisibility(true);
        ctOsfTaskpane.setWidth(350);
        ctOsfTaskpane.setRow(1);
        CTWebExtensionPartRef ctWebExtensionPartRef = new CTWebExtensionPartRef();
        ctWebExtensionPartRef.setId("Rb0860d496d59410f");
        ctOsfTaskpane.setWebextensionref(ctWebExtensionPartRef);
        CTOsfTaskpanes ctOsfTaskpanes = new CTOsfTaskpanes();
        ctOsfTaskpanes.getTaskpane().add(ctOsfTaskpane);
        taskpanesPart.setContents(ctOsfTaskpanes);
        return taskpanesPart;
    }