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

Python 如何使docx文件呈现/加载/添加并保留所有w:LastRenderedPageBreak,python,vba,docx,win32com,python-docx,Python,Vba,Docx,Win32com,Python Docx,我目前正在处理docx文件,并使用w:lastrendedpagebreak作为每个页面内容的标记。有必要确定页面是否已结束 我当前的代码如下: from docx import Document document = Document(file) for p in document.paragraphs: if 'lastRenderedPageBreak' in p._element.xml: # do something # rest of code here 现在我遇

我目前正在处理docx文件,并使用w:lastrendedpagebreak作为每个页面内容的标记。有必要确定页面是否已结束

我当前的代码如下:

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:lastrendedpagebreak标记。我尝试打开docx文件并保存它,但是w:lastrendedpagebreak标记没有增加

只有在打开docx文件并将其另存为XML文件时,w:lastrenderdpagebreak才会正确显示分页符

在使用PythonDocx解析文本和格式化时,是否有任何方法跳过另存为XML部分以正确查看lastrenderedpagebreaks?如果可能的话,我想用python、win32com或vba来实现

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

例: 我希望docx的XML从以下内容更改:

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

为此:

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


所有文本都包含在框架中,因此无需担心页面大小、方向和边距。只要可以用内容或xml标记页面的结尾或新页面的开头,docx的外观就无关紧要了。

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

  • 如果文档从未呈现过,则不会有
    w:lastrenderdpagebreak
    元素

  • 如果文档在呈现后已更改,则现有的
    w:lastrenderdpagebreak
    元素将过时

  • 渲染可能取决于目标媒体的特征

  • 呈现可以依赖于换行和分页算法或其实现的细节

  • 即使一个人可以接受限制(从第1页到第4页),
    w:lastrendedpagerbreak

  • 有关详细信息,请参阅:


    除非明确输入分页符,否则文档中没有明确的页面。如果文件打印在不同类型的纸张上,例如A4与信函,页面将发生变化。这适用于所有文字处理器,而不仅仅是文字处理器。如果打印或显示文档,页面及其内容将在运行时根据介质的大小、边距等进行计算。另一方面,PDF既不可编辑,也不是文字处理格式。它本质上是打印命令(特别是Postscript)。如果您尝试在不同的介质上显示或打印PDF文件,您将通过拉伸或剪切来适应介质,从而获得相同的页数。这就是为什么在手机上阅读PDF文档是如此痛苦,忘记添加,文件中的所有文本都包含在文本框/框架中。我选中了XML,框中已经有一个h:x和h:y,所以我的文件是以A4页格式还是字母格式打开并不重要。我只希望加载后添加并保留分页符。
    我只希望添加分页符
    然后您必须自己添加。同样,Word不是PDF或desktot发布应用程序。就像HTML或LaTeX一样,页面是根据媒体和内容动态计算的,而不是以其他方式,这不是脚注的工作方式。它们存储在
    脚注
    部分中,并在分页后始终显示在页脚中。同样,Word与LaTex几乎没有什么不同(除了XML文件等部分…pat)。你不需要知道一个页面是如何分页来找到它的脚注或它们的引用的。这就是Word的目录和脚注、图像列表的工作原理。感谢您的总结。我可以经历1-4,5中的一些问题已经通过我脚本中的逻辑处理了。到目前为止,我还没有看到我测试过的文档中的表格和图像。所有内容都放在框架中,因此页面大小和边距实际上并不重要,因为我只想知道页面的结尾在哪里,这样我就可以完善处理内容连续性的当前逻辑。你承认基础是流沙,但你仍然希望在此基础上继续发展。祝你好运