如何制作 docx 文件 render/load/add 并保留所有 w:LastRenderedPageBreak

How to make docx file render/load/add and retain all 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 标签没有增加。

只有当我打开 docx 文件并将其另存为 XML 文件时,w:lastRenderedPageBreak 才能正确显示分页符。

在使用 python-docx 解析文本和格式时,是否有任何方法可以跳过另存为 XML 部分以正确查看最后渲染的分页?如果可能,我想在 python、win32com 或 vba 中进行。

编辑: 我想要 w:lastRenderedPageBreak 的原因是我在解析内容时处理脚注时遇到问题,因为它们的格式与普通文本相同(源问题且无法修复)。唯一的区别是它们的开头有一个上标数字。这里需要确定页面是否已经结束,因为目前如果脚本不知道页面是否已经结束,它将继续将下一页的文本包含到脚注中,直到找到 w:lastRenderedPageBreak .

例如: 我希望 docx 的 XML 更改为:

脚注 1:此处为文本。 \p 此处属于脚注 1 的附加文本。 脚注 2:此处为文本。 新页面文本从这里开始...

进入这个:

脚注 1:此处为文本。 \p 此处属于脚注 1 的附加文本。 脚注 2:此处为文本。 新页面文本从这里开始...

所有文本都包含在框架中,因此无需担心页面大小、方向和页边距。只要可以在内容或 xml.

中标记页面结尾或新页面开头,docx 的外观并不重要。

w:lastRenderedPageBreak 有太多限制,无法用作分页指标:

  1. 如果文档从未被渲染过,则不会有 w:lastRenderedPageBreak 个元素。

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

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

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

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

有关详细信息,请参阅: