如何解决如何使 docx 文件呈现/加载/添加并保留所有 w:LastRenderedPageBreak
我目前正在处理 docx 文件,我使用 w:lastRenderedPageBreak 作为每个页面内容的标记。有必要确定一个页面是否已经结束。
我现在的代码是这样的:
from docx import Document
document = Document(file)
for p in document.paragraphs:
if 'lastRenderedPageBreak' in p._element.xml:
# do something
# rest of code here
现在我遇到的问题是一个有4页的docx文件只有2个w:lastRenderedPageBreak标签。我尝试打开 docx 文件并保存它,但 w:lastRenderedPageBreak 标签没有增加。
w:lastRenderedPageBreak 唯一一次正确显示分页符是当我打开 docx 文件并将其另存为 XML 文件时。
在使用 python-docx 解析文本和格式时,有什么方法可以跳过另存为 XML 部分以正确查看 lastrenderedpagebreaks 吗?如果可能,我想在 python、win32com 或 vba 中进行。
编辑: 我想要 w:lastRenderedPageBreak 的原因是我在解析内容时处理脚注时遇到问题,因为它们的格式与普通文本相同(源问题并且无法修复)。唯一的区别是它们的开头有一个上标数字。这里需要确定页面是否已经结束,因为当前如果脚本不知道页面是否已经结束,它将继续将下一页的文本包含到脚注中,直到找到 aw:lastRenderedPageBreak。>
例如: 我希望 docx 的 XML 从此改变:
脚注 1:此处为文字。 \p 此处属于脚注 1 的附加文本。 脚注 2:这里的文字。 新页面文本从这里开始...
进入这个:
脚注 1:此处为文字。 \p
此处属于脚注 1 的附加文本。
脚注 2:这里的文字。
所有文本都包含在框架中,因此无需担心页面大小、方向和边距。只要可以在 content 或 xml 中标记页面结束或新页面的开头,docx 的外观无关紧要。
解决方法
w:lastRenderedPageBreak
有太多限制,无法用作分页指示器:
-
如果文档从未呈现过,则不会有
w:lastRenderedPageBreak
元素。 -
如果文档在呈现后发生了更改,现有的
w:lastRenderedPageBreak
元素将失效。 -
渲染可能取决于目标媒体的特性。
-
渲染可能取决于换行和分页算法或其实现的细节。
-
即使可以忍受#1 到#4 的限制,
w:lastRenderedPageBreak
也是 has historically had reliability issues。
有关更多详细信息,请参阅:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。