python-docx获取单词的位置和属性

时间:2019-12-13 09:29:32

标签: docx python-docx

我正在寻找一种方法来提取文档中每个单词的位置(x,y)和属性(字体/大小)。

从python-docx文档中,我知道:

  

从概念上讲,Word文档有两层,一个文本层和一个   绘图层。在文本层中,文本对象从左流到   从上到下,从上一页开始创建新页面   充满。在绘图层中,称为图形的绘图对象是   放在任意位置。这些有时称为   浮动的形状。

     

图片是可以出现在文本或绘图层中的形状。当它出现在文本图层中时,称为内嵌形状,   或更具体地说,是嵌入式图片。

     

[...]在撰写本文时,python-docx仅支持嵌入式图片。

但是,即使不是要点,我也想知道是否存在类似的东西:

vtkXMLPolyDataWriter

有人有想法吗? 最好, 亚瑟

1 个答案:

答案 0 :(得分:1)

for word in paragraph.text:  # <= Non-existing (yet wished) functionalities, IMHO    

此功能在Python库中以str.split()的形式提供。这些可以很容易地组成为:

for word in paragraph.text.split():
    ...

关于

print(word.x, word.y)  # <= Non-existing (yet wished) functionnalities, IMHO

我认为可以肯定地说,此功能永远不会出现在python-docx中,如果确实没有,它将看起来像这样。

这样的功能将要执行的操作是询问页面渲染器该渲染器将放置这些字符的位置。 python-docx没有渲染引擎(因为它不渲染文档);它只是一个精美的XML编辑器,可以有选择地修改WordprocessingML词汇表中的XML文件。

可能会从Word本身获取这些值,因为Word 确实具有渲染引擎(用于屏幕显示和打印)。

如果有这样的功能,我希望它会在该段落中包含一个段落和一个字符偏移量,或者类似document.position(paragraph, offset=42)paragraph.position(offset=42)之类的内容。