Add 'Page X of Y' footer to all .docx files
This commit is contained in:
@@ -22,6 +22,7 @@ from docx import Document
|
||||
from docx.shared import Inches, Pt
|
||||
from docx.oxml.ns import qn
|
||||
from docx.oxml import OxmlElement
|
||||
from docx.enum.text import WD_ALIGN_PARAGRAPH
|
||||
|
||||
logger = logging.getLogger("scraibe.email_sender")
|
||||
|
||||
@@ -304,6 +305,52 @@ def _setup_docx_style(doc):
|
||||
font.name = "Courier"
|
||||
font.size = Pt(12)
|
||||
|
||||
# Add "Page X of Y" footer, right-aligned
|
||||
footer = section.footer
|
||||
footer.is_linked_to_previous = False
|
||||
p = footer.paragraphs[0]
|
||||
p.alignment = WD_ALIGN_PARAGRAPH.RIGHT
|
||||
run = p.add_run()
|
||||
run.font.name = "Courier"
|
||||
run.font.size = Pt(10)
|
||||
|
||||
# Field: PAGE
|
||||
fldChar1 = OxmlElement("w:fldChar")
|
||||
fldChar1.set(qn("w:fldCharType"), "begin")
|
||||
run._r.addprevious(fldChar1)
|
||||
|
||||
instrText = OxmlElement("w:instrText")
|
||||
instrText.set(qn("xml:space"), "preserve")
|
||||
instrText.text = " PAGE "
|
||||
run._r.addprevious(instrText)
|
||||
|
||||
fldChar2 = OxmlElement("w:fldChar")
|
||||
fldChar2.set(qn("w:fldCharType"), "end")
|
||||
run._r.addprevious(fldChar2)
|
||||
|
||||
# Static text: " of "
|
||||
run_of = p.add_run(" of ")
|
||||
run_of.font.name = "Courier"
|
||||
run_of.font.size = Pt(10)
|
||||
|
||||
# Field: NUMPAGES
|
||||
run2 = p.add_run()
|
||||
run2.font.name = "Courier"
|
||||
run2.font.size = Pt(10)
|
||||
|
||||
fldChar3 = OxmlElement("w:fldChar")
|
||||
fldChar3.set(qn("w:fldCharType"), "begin")
|
||||
run2._r.addprevious(fldChar3)
|
||||
|
||||
instrText2 = OxmlElement("w:instrText")
|
||||
instrText2.set(qn("xml:space"), "preserve")
|
||||
instrText2.text = " NUMPAGES "
|
||||
run2._r.addprevious(instrText2)
|
||||
|
||||
fldChar4 = OxmlElement("w:fldChar")
|
||||
fldChar4.set(qn("w:fldCharType"), "end")
|
||||
run2._r.addprevious(fldChar4)
|
||||
|
||||
|
||||
def _add_cover_page(doc, doc_type, date, description):
|
||||
p_type = doc.add_paragraph()
|
||||
|
||||
Reference in New Issue
Block a user