Is this correct Open Office XML?

2019-06-28 05:13发布

问题:

        <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <?mso-application progid="Word.Document"?>
    <pkg:package xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
        <pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512">
            <pkg:xmlData>
                <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
                    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml" />
                </Relationships>
            </pkg:xmlData>
        </pkg:part>
        <pkg:part pkg:name="/word/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="256">
            <pkg:xmlData>
                <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
                    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png" />
                </Relationships>
            </pkg:xmlData>
        </pkg:part>
        <pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
            <pkg:xmlData>
                <w:document mc:Ignorable="w14 w15 wp14" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape">
                    <w:body>
                        <w:p w:rsidR="00AE3E50" w:rsidRDefault="00DE2072">
                            <w:r>
                                <w:drawing>
                                    <wp:inline distT="0" distB="0" distL="0" distR="0">
                                        <wp:extent cx="2194560" cy="1463040" />
                                        <wp:docPr id="1" name="My Video" />
                                        <wp:cNvGraphicFramePr>
                                            <a:graphicFrameLocks noChangeAspect="1" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
                                        </wp:cNvGraphicFramePr>
                                        <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
                                            <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
                                                <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">
                                                    <pic:nvPicPr>
                                                        <pic:cNvPr id="1" name="" />
                                                        <pic:cNvPicPr />
                                                    </pic:nvPicPr>
                                                    <pic:blipFill>
                                                        <a:blip r:embed="rId2">
                                                            <a:extLst>
                                                                <a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
                                                                    <a14:useLocalDpi val="0" xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" />
                                                                </a:ext>
                                                                <a:ext uri="{C809E66F-F1BF-436E-b5F7-EEA9579F0CBA}">
                                                                    <wp15:webVideoPr embeddedHtml="&lt;iframe width=&quot;800&quot; height=&quot;600&quot; src=&quot;http://www.youtube.com/embed/qk51u8-4uo4&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;" w="800" h="600" xmlns:wp15="http://schemas.microsoft.com/office/word/2012/wordprocessingDrawing" />
                                                                </a:ext>
                                                            </a:extLst>
                                                        </a:blip>
                                                        <a:stretch>
                                                            <a:fillRect />
                                                        </a:stretch>
                                                    </pic:blipFill>
                                                    <pic:spPr>
                                                        <a:xfrm>
                                                            <a:off x="0" y="0" />
                                                            <a:ext cx="2194560" cy="1463040" />
                                                        </a:xfrm>
                                                        <a:prstGeom prst="rect">
                                                            <a:avLst />
                                                        </a:prstGeom>
                                                    </pic:spPr>
                                                </pic:pic>
                                            </a:graphicData>
                                        </a:graphic>
                                    </wp:inline>
                                </w:drawing>
                            </w:r>
                        </w:p>
                    </w:body>
                </w:document>
            </pkg:xmlData>
        </pkg:part>
        <pkg:part pkg:name="/word/media/image1.png" pkg:contentType="image/png" pkg:compression="store">
            <pkg:binaryData>
                iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAHN6w8ZAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
                jwv8YQUAAAAGUExURQAAAAAAAKVnuc8AAAACdFJOU/8A5bcwSgAAAAlwSFlzAAAOxAAADsQBlSsO
                GwAAAAxJREFUGFdjYBgYAAAAeAABoRR6NAAAAABJRU5ErkJggg==
            </pkg:binaryData>
        </pkg:part>
    </pkg:package>

I'm not sure whether above one is correct or not but it keeps giving me error "Invalid format" while adding to MS word using programming". The error is Error Message: The format of the specified data object is invalid. Error Code: 2006

Here is click event for the buttonw which is inserting code...

Office.context.document.setSelectedDataAsync
(
    xmlCode,
    { coercionType: "ooxml" }, 
    function (result)
    {
        console.log("test");
    }
);

variable xmlCode is consists of ooxml code as string data.

回答1:

It's solved now... The mistake that I was doing is, I have placed the ooxml code inside a <textarea> html element. So while it was being rendered inside browser, the html encoded iframe code was converted into HTML tags which was causing issue. I updated my code, removed ooxml code from <textarea> and placed it directly as string to variable and the problem was solved.

Now, I'm able to embed video using office.js



回答2:

I'm not entirely sure that the OOXML data should be a string.

Writing data from apps to Office documents suggests that you should be using a CustomXmlNode object:

In the event that you cannot insert content through any of the above methods, and if you are in Word 2013, you can directly alter the structure of the document by inserting OOXML nodes. This gets complicated fast—refer to the Apps for Office CustomXmlNode APIs for more information.

(I especially love "this gets complicated fast"...sure makes me excited to use that API!)