Python-docx,制作一个word文件,需要检测是否在新页面

Python-docx, making a word file and need to detect whether on new page or not

我正在使用 python-docx module 根据数据按需生成大量文档。当我使用常规 document.add_picture 命令插入图形时有几个部分,如下所示:

document.add_picture(img_after_crop, width=Inches(width)) 

我遇到的问题是很多图片都是图表,完成了一个部分,所以在图表之后我想移动到新页面,但是图片大小不同,所以有时它们已经填满了页面。因此,如果我在图像之后放一个分页符,我有时会得到一个漂亮的图形,然后是下一部分的新页面,有时(如果图像填满页面)流程已经移动到下一页和分页符将留下一个空白页面。我正在寻找一种方法来防止这种情况。如果有获取当前页码的好方法,我可以看看如何解决该问题。改用 "sections" 会解决这个问题吗(例如,如果我们已经在空白页上,部分是否会自动开始新页面但不会前进页面)?在正在处理的文档中检测页面进度是理想的,但我愿意接受任何解决方案...

解决方案

下面是简短的正确答案,但我经过反复试验才找出正确的使用方法,因此这里记录了关于如何使用的最少代码片段 page_break_before使标题或段落跳转到下一页:

from docx import Document
document = Document()
document.add_heading('Document title', 0)
para = document.add_heading("This heading goes at the top of a new page", level=1)
para.paragraph_format.page_break_before=True
document.add_paragraph('Just some text goes here. This is a normal paragraph')
document.save('Doctest.docx')

此python 将生成一个测试 word 文档,其中标题位于第一页,然后标题跳转到下一页,下面的段落位于其下方。关键技巧是 paragraph_format 访问权限,它还允许您使用 paragraph_format options 中的对齐设置、keep_together 设置等。我需要从几个示例中拼凑它以找出确切设置值的位置所以我想我 post 它是为了 posterity.

尝试将紧跟在图像之后的段落的段落格式设置为 .page_break_before = True。 Word 呈现引擎足够智能,如果该段落恰好出现在新页面的第一个位置,则不会添加额外的分页符。