Word 2007, Open XML — встраивание изображения

Знаете ли вы, какую основную информацию ДОЛЖЕН включать абзац (<w:p/>) в document.xml внутри документа *.docx, который определяет изображение? Я знаю, что должно быть:

<a:blip r:embed="rId4" /> 

указание идентификатора отношения, но что еще? Его очень сложно найти в гугле, а эксперименты с вырезанием тегов из готового документа или чтением спецификации занимают много времени.

Пример со всеми необходимыми тегами будет принят с благодарностью.


person agnieszka    schedule 18.12.2008    source источник
comment
дело в том, что мне нужно вставить изображение, но я хочу написать как можно меньше данных   -  person agnieszka    schedule 18.12.2008


Ответы (1)


Word довольно разборчив в отношении предоставленного входного XML. Чтобы вставить изображение, вы должны предоставить некоторую информацию. Вот простой пример:

документ.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" 
            xmlns:v="urn:schemas-microsoft-com:vml" 
            xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" 
            xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
  <w:body>
    <w:p>
      <w:r>
        <w:drawing>
          <wp:inline distT="0" distB="0" distL="0" distR="0">
            <wp:extent cx="5943600" cy="3717290"/>
            <wp:docPr id="1" name="Picture 0" descr="vlcsnap-325726.png"/>
            <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="myImage.png"/>
                    <pic:cNvPicPr/>
                  </pic:nvPicPr>
                  <pic:blipFill>
                    <a:blip r:embed="rId4"/>
                    <a:stretch>
                      <a:fillRect/>
                    </a:stretch>
                  </pic:blipFill>
                  <pic:spPr>
                    <a:xfrm>
                      <a:off x="0" y="0"/>
                      <a:ext cx="5943600" cy="3717290"/>
                    </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>

документ.xml.rels

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
  <!-- other relationships go here -->
  <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image1.png"/>
</Relationships>

И, конечно же, изображение должно быть добавлено в пакет в правильном месте (media/image1.png).

Поскольку все это довольно сложно, я бы рекомендовал вам использовать OpenXML SDK 2.0, предоставленный Microsoft или другой библиотекой, например. OpenXML4J. Эти библиотеки, особенно от Microsoft, могут значительно облегчить вашу работу.

person Dirk Vollmar    schedule 18.12.2008