Ошибка при попытке вставить изображение в WordML - PullRequest
1 голос
/ 30 марта 2010

Требуется помощь.

Я получаю эту ошибку

{"The xml has invalid content and cannot be constructed as an element.\r\nParameter name: outerXml"}

при передаче созданного XML-кода в конструктор DocumentFormat.OpenXml.Office.Drawing.Drawing (), как этот

DocumentFormat.OpenXml.Office.Drawing.Drawing d = new DocumentFormat.OpenXml.Office.Drawing.Drawing(img);

Вот XML, который передается в

<w:drawing xmlns:w="http://schemas.openxmlformats.org/drawingml/2006/main">
                <wp:anchor distT="0" distB="0" distL="114300" distR="114300" simplePos="0" relativeHeight="251658240" behindDoc="0" locked="0" layoutInCell="1" allowOverlap="1" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing">
                  <wp:simplePos x="0" y="0"/>
                  <wp:positionH relativeFrom="column">
                    <wp:align>right</wp:align>
                  </wp:positionH>
                  <wp:positionV relativeFrom="paragraph">
                    <wp:align>top</wp:align>
                  </wp:positionV>
                  <wp:extent cx="400" cy="400"/>
                  <wp:effectExtent l="19050" t="0" r="0" b="0"/>
                  <wp:wrapSquare wrapText="bothSides"/>
                  <wp:docPr id="1" name="image"/>
                  <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="0" name="image"/>
                          <pic:cNvPicPr>
                            <a:picLocks noChangeAspect="1" noChangeArrowheads="1"/>
                          </pic:cNvPicPr>
                        </pic:nvPicPr>
                        <pic:blipFill>
                          <a:blip r:embed="rIdImg4" cstate="print" xmlns:r="http://schemas.openxmlformats.org/drawingml/2006/relationships"/>
                          <a:stretch>
                            <a:fillRect/>
                          </a:stretch>
                        </pic:blipFill>
                        <pic:spPr bwMode="auto">
                          <a:xfrm>
                            <a:off x="0" y="0"/>
                            <a:ext cx="400" cy="400"/>
                          </a:xfrm>
                          <a:prstGeom prst="rect">
                            <a:avLst/>
                          </a:prstGeom>
                          <a:noFill/>
                          <a:ln w="9525">
                            <a:noFill/>
                            <a:miter lim="800000"/>
                            <a:headEnd/>
                            <a:tailEnd/>
                          </a:ln>
                        </pic:spPr>
                      </pic:pic>
                    </a:graphicData>
                  </a:graphic>
                </wp:anchor>
              </w:drawing>

Спасибо, Киру

1 Ответ

2 голосов
/ 13 января 2011

Элемент, который вы создаете из XML, находится в пространстве имен Drawing. (Часто встречается с использованием префикса «a:».) При создании этих элементов из строк OuterXml корневой узел должен соответствовать типу создаваемого объекта. (В этом случае DocumentFormat.OpenXml.Office.Drawing.Drawing). Проблема в том, что корневой узел XML предназначен для другого элемента.

Попробуйте создать объект DocumentFormat.OpenXml.WordProcessing.Drawing (): http://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.drawing.aspx

Может быть трудно найти правильный уровень, на котором можно вставить DrawingML. Извлеките инструмент OpenXmlSDK, чтобы увидеть, что действительно для каких узлов Желаем удачи!

...