Вопрос

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

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

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

Мы были бы весьма признательны за пример со всеми необходимыми тегами.

Это было полезно?

Решение

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

document.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>

document.xml.rels документ.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 предоставлено Корпорацией Майкрософт или другой библиотекой, например OpenXML4J.Эти библиотеки, особенно от Microsoft, могут намного упростить вашу работу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top