使用 python-docx 的多个编号列表

问题描述 投票:0回答:1

出于个人目的,我需要在单个 docx 文件中生成大量类似的单页内容,因此我创建了一个 Python 脚本来自动执行此操作。其中一些内容是编号列表,但不幸的是,编号也逐页连续,例如:


Lorem ipsum dolor sat amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut laboure et dolore Magna aliqua。乌恩尼姆广告 Minim veniam, quis nostrud 实习 ullamco Laboris nisi ut aliquip ex ea commodo consequat.

1。列出项目1

2。列出项目2

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。例外圣奥卡埃猫库比达特非 Proident,sunt in culpa qui officia deserunt mollit anim id est 劳动。

<--- Page break -->

Lorem ipsum dolor sat amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut laboure et dolore Magna aliqua。乌恩尼姆广告 Minim veniam, quis nostrud 实习 ullamco Laboris nisi ut aliquip ex ea commodo consequat.

3.列出项目1

4。列出项目2

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。例外圣奥卡卡特库比达特非 Proident,sunt in culpa qui officia deserunt mollit anim id est 劳动。


我希望它看起来像这样:


Lorem ipsum dolor sat amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut laboure et dolore Magna aliqua。乌恩尼姆广告 Minim veniam, quis nostrud 实习 ullamco Laboris nisi ut aliquip ex ea commodo consequat.

1。列出项目1

2。列出项目2

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。例外圣奥卡卡特库比达特非 Proident,sunt in culpa qui officia deserunt mollit anim id est 劳动。

<--- Page break -->

Lorem ipsum dolor sat amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut laboure et dolore Magna aliqua。乌恩尼姆广告 Minim veniam, quis nostrud 实习 ullamco Laboris nisi ut aliquip ex ea commodo consequat.

1。列出项目1

2。列出项目2

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。例外圣奥卡卡特库比达特非 Proident,sunt in culpa qui officia deserunt mollit anim id est 劳动。


为了提供有关我的代码如何工作的更多详细信息,假设我有一个页面列表,可以在其中获取基于页面的项目列表,并在 get_items(page) 函数中实现。 考虑到上述内容,我的代码目前看起来像这样(为了简单起见,我排除了格式化段落):

document = Document()
pages = [...]                      # list of pages
for page in pages:
    document.add_paragraph("...")  # put some regular text to the page
    items = get_items(page)
    for item in items:
        p = document.add_paragraph(item, style='List Number 2')     # 'Line Numer 2' is for some extra indent
    document.add_paragraph("...")  # put some regular text to the page
    document.add_page_break()      # add page breaks to start from a new page
document.save("...")               # save the document
python docx python-docx
1个回答
0
投票

当我查看 DaSt 提到的 SO 评论时,很明显没有直接的方法可以在单个文档中添加超过 3 个具有单独编号的编号列表。抽象编号解决方案似乎太复杂,因此我看到的解决此问题的最简单方法如下:

LEFT_INDENT = Pt(36)               # sample left indent for numbered list
document = Document()
pages = [...]                      # list of pages
for page in pages:
    document.add_paragraph("...")  # put some regular text to the page
    items = get_items(page)
    for i in range(len(items)):
        p = document.add_paragraph(f"{i + 1}. {items[i]}")
        p.paragraph_format.left_indent = LEFT_INDENT
    document.add_paragraph("...")  # put some regular text to the page
    document.add_page_break()      # add page breaks to start from a new page
document.save("...")               # save the document
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.