首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >页码python-docx

页码python-docx
EN

Stack Overflow用户
提问于 2016-03-24 12:11:05
回答 2查看 12.3K关注 0票数 10

我正在尝试用Python语言创建一个程序,它可以在.docx文件中找到特定的单词并返回它所在的页码。到目前为止,在浏览python-docx文档时,我无法找到如何访问页码,甚至无法找到页码所在的页脚。有没有办法使用python-docx或者仅仅使用python来做到这一点?或者,如果不是,最好的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-24 14:43:46

简短的回答是否定的,因为分页符是由呈现引擎插入的,而不是由.docx文件本身决定的。

但是,某些客户端会在保存的XML中放置一个<w:lastRenderedPageBreak>元素,以指示它们上次呈现页面时在何处断开了页面。

我不知道哪种方法能做到这一点(尽管我希望Word本身能做到),也不知道它有多可靠,但如果你想用Python工作,这就是我推荐的方向。您可能会使用python-docx来获取对所需lxml元素的引用(如w:document/w:body),然后使用XPath命令或其他命令迭代到特定页面,但只要仔细考虑一下,就会有一些详细的开发来使其工作。

如果您使用本机Windows MS Office API,则可以获得更好的功能,因为它实际运行Word应用程序。

如果在python-docx中生成文档,则不会放置这些元素,因为它不会尝试呈现文档(也不太可能)。我们也不太可能在短期内添加对w:lastRenderedPageBreak的支持;我甚至不太确定那会是什么样子。

如果你搜索'lastRenderedPageBreak‘和/或'python-docx分页符’,你会在这里看到其他问题/答案,可能会给出更多。

票数 11
EN

Stack Overflow用户

发布于 2019-04-15 22:52:00

使用Python-docx: identify a page break in paragraph

代码语言:javascript
复制
from docx import Document
fn='1.doc'
document = Document(fn)
pn=1    
import re
for p in document.paragraphs:
    r=re.match('Chapter \d+',p.text)
    if r:
        print(r.group(),pn)
    for run in p.runs:
        if 'w:br' in run._element.xml and 'type="page"' in run._element.xml:
            pn+=1
            print('!!','='*50,pn)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36193159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档