我正在尝试在python中创建一个程序,该程序可以在.docx文件中找到特定的单词并返回它发生的页码。到目前为止,在查看python-docx文档时,我一直无法找到如何访问页码或甚至是数字所在的页脚。有没有办法使用python-docx或甚至只是python?或者如果没有,最好的方法是什么?
答案 0 :(得分:7)
简短回答是否定的,因为分页符由呈现引擎插入,而不是由.docx文件本身确定。
但是,某些客户在保存的XML中放置了一个$tgl_real = isset($_POST['TGL_REAL'])? $_POST['TGL_REAL']:"NA";
元素,以指示它们在上次呈现时中断页面的位置。
我不知道这是做什么的(虽然我希望Word本身可以做到)以及它有多可靠,但如果您想在Python中工作,那就是我推荐的方向。您可以使用python-docx来获取对所需lxml元素的引用(如Stash pullrequest builder plugin
),然后使用XPath命令或其他东西迭代到特定页面,但只需要考虑一下它就可以了。那将是一些详细的发展,以实现这一目标。
如果您使用的是本机Windows MS Office API,那么您可能可以获得更好的功能,因为它实际上运行的是Word应用程序。
如果您在python-docx中生成文档,则不会放置这些元素,因为它不会尝试呈现文档(也不可能)。我们也不太可能很快添加对w:lastRenderedPageBreak的支持;我甚至不确定那会是什么样子。
如果你在' lastRenderedPageBreak'上搜索和/或' python-docx分页符'你会在这里看到其他问题/答案,可能会多一些。
答案 1 :(得分:0)
使用Python-docx: identify a page break in paragraph
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)