Я пытаюсь определить в документе docx расширение встроенных изображений.Этот открытый XML-документ мог быть создан другим пользователем с помощью Microsoft Word или OpenOffice.Изображения были внедрены через ленту или перетаскиванием, и они могут быть inlineShape (mose of the time) или Shape.Мне нужно получить доступ к расширению, потому что документ затем (не в моей юрисдикции) анализируется и преобразуется в pdf, а некоторые расширения изображений не совместимы с процессом (а именно, emf of wmf).
Эти изображения могутне имеют ни имен, ни свойств альтернативного текста.Свойство linkFormat также недоступно, поскольку они встроены.Просматривая строку ActiveDocument.WordOpenXML, я могу узнать, есть ли такие изображения.Но тогда я не могу связать их с соответствующей формой в документе, чтобы определить, какое изображение будет проблематичным.Поскольку они встроены, папка media в docx zip содержит изображение, и они связаны с идентификаторами в документе через document.xml.rels, например,
<Relationship Target="media/image1.emf" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Id="rId8"/>
Теперь я могу найти в документе.xml где используется, что rId8:
<w:drawing>
<wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="59736095" wp14:editId="3A4D29FE">
<wp:extent cx="1286510" cy="712470"/>
<wp:effectExtent l="0" t="0" r="8890" b="0"/>
<wp:docPr id="2" name="Picture 2"/>
<wp:cNvGraphicFramePr>
<a:graphicFrameLocks noChangeAspect="1"/>
</wp:cNvGraphicFramePr>
<a:graphic>
<a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
<pic:pic>
<pic:nvPicPr>
<pic:cNvPr id="0" name="Picture 2"/>
<pic:cNvPicPr>
<a:picLocks noChangeAspect="1" noChangeArrowheads="1"/>
</pic:cNvPicPr>
</pic:nvPicPr>
<pic:blipFill>
<a:blip r:embed="rId8" cstate="print">
<a:extLst>
<a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
<a14:useLocalDpi val="0"/>
</a:ext>
</a:extLst>
</a:blip>
<a:srcRect/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</pic:blipFill>
<pic:spPr bwMode="auto">
</pic:spPr>
</pic:pic>
</a:graphicData>
</a:graphic>
</wp:inline>
</w:drawing>
Оттуда я застрял!Что делать с этими данными?Родительским узлом чертежа является абзац с идентификатором
w14:paraId="78D01A35"
, но это единственный экземпляр идентификатора в строке ActiveDocument.WordOpenXML.
Я хотел бы иметь указателигде я могу посмотреть.Из того, что я понимаю, когда Word анализирует docx и строит объектную модель, он преобразует ссылки отношений в inlineShape с якорями в хорошем месте.Но он каким-то образом теряет всю ссылку на имя изображения или местоположение в zip docx.
PS: мне нужно найти решение в слове vba