我有一个docx文件,其中包含图像,如下所示,格式为未压缩的document.xml
。在这里,特定的图像文件在docx结构中由其ID引用: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))
还有其他方法可以读取此数据吗?我可以看到该图像包含在“运行”中,但是我看不到任何使用docx.text.Run
类的API来访问该图像的方法。 imagedata
元素的ID就足够了。
答案 0 :(得分:0)
Refer to python-docx 0.8.9文档
Word文档具有两层,即文本层和图形层。 当图片出现在文本层中时,称为嵌入式图片。 在撰写本文时,python-docx仅支持嵌入式图片。
我假设您的图片位于绘图层中,因此您无法通过python-docx读取图片。