如何让页码从第N页的第1页开始?

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

使用

python-docx
如何使页码从第一页的另一页开始但仍然从1开始?

使用这个问题的答案,我想出了以下可重现的示例。

它从正确的页面(第4页)开始编号,但它从第4页开始,我希望它是第1页。如何解决这个问题?

import docx
from docx.enum.section import WD_SECTION
from docx.oxml import OxmlElement, ns

def create_element(name):
    return OxmlElement(name)

def create_attribute(element, name, value):
    element.set(ns.qn(name), value)


def add_page_number(section):
    p = section.footer.paragraphs[0]
    p.alignment = 1
    p.style.font.size = Pt(9)
    p.style.font.name = DEFAULT_FONT_NAME

    run = p.add_run()
    fldChar1 = create_element('w:fldChar')
    create_attribute(fldChar1, 'w:fldCharType', 'begin')

    instrText = create_element('w:instrText')
    create_attribute(instrText, 'xml:space', 'preserve')
    instrText.text = "PAGE"

    fldChar2 = create_element('w:fldChar')
    create_attribute(fldChar2, 'w:fldCharType', 'end')

    run._r.append(fldChar1)
    run._r.append(instrText)
    run._r.append(fldChar2)

document = docx.Document()

# first blank page
document.add_page_break()

# second blank page
document.add_page_break()

# 3rd page with some text
p = document.add_paragraph("Title")
document.add_page_break()

# page from which I want to get page numbers:
document.add_section(WD_SECTION.NEW_PAGE)
document.sections[1].footer.is_linked_to_previous = False
document.add_paragraph("text of my first page")

# add page numbers
add_page_number(document.sections[1])

# save
document.save('example.docx')

python ms-word python-docx
1个回答
0
投票

要在非文档首页的页面上从 1 开始页码,您可以修改 add_page_number 函数以指定起始页码。 向 add_page_number 函数添加可选的 start_page_number 参数,该参数允许您指定起始页码。在add_page_number函数中,在“PAGE”字段命令后添加页码。您可以将 start_page_number 设置为 1,以便在所需页面上从 1 开始编号。

© www.soinside.com 2019 - 2024. All rights reserved.