微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使 docx 文件呈现/加载/添加并保留所有 w:LastRenderedPageBreak

如何解决如何使 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 有太多限制,无法用作分页指示器:

  1. 如果文档从未呈现过,则不会有 w:lastRenderedPageBreak 元素。

  2. 如果文档在呈现后发生了更改,现有的 w:lastRenderedPageBreak 元素将失效。

  3. 渲染可能取决于目标媒体的特性。

  4. 渲染可能取决于换行和分页算法或其实现的细节。

  5. 即使可以忍受#1 到#4 的限制,w:lastRenderedPageBreak 也是 has historically had reliability issues

有关更多详细信息,请参阅:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?