Word 2007, Open XML - встраивание изображения
-
22-08-2019 - |
Вопрос
Знаете ли вы, какую основную информацию ДОЛЖЕН включать абзац (<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, могут намного упростить вашу работу.