У меня есть файл docx, который содержит изображения, показанные ниже в распакованном формате document.xml
. Здесь конкретный файл изображений называется его идентификатором в структуре docx: rId5
.
<w:p>
<w:pPr>
<w:framePr w:h="13450" w:wrap="notBeside" w:vAnchor="text" w:hAnchor="text" w:xAlign="center" w:y="1"/>
<w:widowControl w:val="0"/>
<w:jc w:val="center"/>
<w:rPr>
<w:sz w:val="2"/>
<w:szCs w:val="2"/>
</w:rPr>
</w:pPr>
<w:r>
<w:pict>
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype>
<v:shape id="_x0000_s1026" type="#_x0000_t75" style="width:486pt;height:673pt;">
<v:imagedata r:id="rId5" r:href="rId6"/>
</v:shape>
</w:pict>
</w:r>
</w:p>
Я пытался использовать свойство document.inline_shapes
для чтения изображений, но следующие отпечатки 0:
PATH = "/home/amoe/test.docx"
doc = docx.Document(PATH)
print(len(doc.inline_shapes))
Есть ли другой способ прочитать эти данные? Я вижу, что изображение содержится в «run», но я не вижу способа использовать API класса docx.text.Run
для доступа к изображению. Идентификатор элемента imagedata
будет достаточно.