Headers and footers in Word are sections at the top and bottom margins of each page. They can contain additional information such as page numbers, document titles, dates, author names, and other identifying details. By default, the headers or footers on all pages are the same, but in certain scenarios, you can also insert different headers or footers on the first page, odd pages, or even pages. This article will demonstrate how to insert headers and footers into a Word document in Python using Spire.Doc for Python.
- Insert Headers and Footers into a Word Document
- Add Different Headers and Footers for the First Page and Other Pages
- Add Different Headers and Footers for Odd and Even Pages
Install Spire.Doc for Python
This scenario requires Spire.Doc for Python and plum-dispatch v1.7.4. They can be easily installed in your Windows through the following pip commands.
pip install Spire.Doc
If you are unsure how to install, please refer to this tutorial: How to Install Spire.Doc for Python on Windows
Insert Headers and Footers into a Word Document in Python
To insert a header or a footer into a Word document, you first need to get them through the Section.HeadersFooters.Header and Section.HeadersFooters.Footer properties, and then add paragraphs to them to insert pictures, text, page numbers, dates, or other information.
The following are steps to add headers and footers in Word:
- Create a Document object.
- Load a Word document using Document.LoadFromFile() method.
- Get a specified section using Document.Sections[] property.
- Add Header
- Get header using Section.HeadersFooters.Header property.
- Add a paragraph to the header using HeaderFooter.AddParagraph() method and set paragraph alignment.
- Add an image to the header paragraph using Paragraph.AppendPicture() method, and then set the text wrapping style and position of the image.
- Add text to the header paragraph using Paragraph.AppendText() method, and then set the font name, size, color, etc.
- Add Footer
- Get footer using Section.HeadersFooters.Footer property.
- Add a paragraph to the footer and then add text to the footer paragraph.
- Get the borders of the footer paragraph using Paragraph.Format.Borders property, and then set the top border style and space.
- Save the result document using Document.SaveToFile() method.
- Python
from spire.doc import * from spire.doc.common import * # Create a Document object document = Document() # Load a Word document document.LoadFromFile("Sample.docx") # Get the first section section = document.Sections[0] # Get header header = section.HeadersFooters.Header # Add a paragraph to the header and set its alignment style headerParagraph = header.AddParagraph() headerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Left # Add an image to the header paragraph and set its text wrapping style, position headerPicture = headerParagraph.AppendPicture("Logo.png") headerPicture.TextWrappingStyle = TextWrappingStyle.Square headerPicture.VerticalOrigin = VerticalOrigin.Line headerPicture.VerticalAlignment = ShapeVerticalAlignment.Center # Add text to the header paragraph and set its font style text = headerParagraph.AppendText("E-iceblue Co. Ltd."+ "\nYour Office Development Master") text.CharacterFormat.FontName = "Arial" text.CharacterFormat.FontSize = 10 text.CharacterFormat.Bold = True text.CharacterFormat.TextColor = Color.get_Blue() # Get footer footer = section.HeadersFooters.Footer # Add a paragraph to the footer paragraph and set its alignment style footerParagraph = footer.AddParagraph() footerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center # Add text to the footer paragraph and set its font style text = footerParagraph.AppendText("Copyright © 2013 e-iceblue. All Rights Reserved.") text.CharacterFormat.FontName = "Arial" text.CharacterFormat.FontSize = 10 # Set the border of the footer paragraph footerParagraph.Format.Borders.Top.BorderType = BorderStyle.Single footerParagraph.Format.Borders.Top.Space = 0.05 # Save the result file document.SaveToFile("HeaderAndFooter.docx", FileFormat.Docx) document.Close()
Add Different Headers and Footers for the First Page and Other Pages in Word in Python
Sometimes you may need to insert a header and footer only on the first page, or you may want the header and footer on the first page different from other pages.
Spire.Doc for Python offers the Section.PageSetup.DifferentFirstPageHeaderFooter property to enable a different first page header or footer. The following are the detailed steps to accomplish the task.
- Create a Document object.
- Load a Word document using Document.LoadFromFile() method.
- Get a specified section using Document.Sections[] property.
- Enable different headers and footers for the first page and other pages by setting the Section.PageSetup.DifferentFirstPageHeaderFooter property to True.
- Get the first page header using Section.HeadersFooters.FirstPageHeader property.
- Add a paragraph to the first page header and then add an image to the header paragraph.
- Get the first page footer using Section.HeadersFooters.FirstPageFooter property.
- Add a paragraph to the first page footer and then add text to the footer paragraph.
- Set headers and footers for other pages. (There's no need to set this if you only need the header & footer for the first page.)
- Save the result document using Document.SaveToFile() method.
- Python
from spire.doc import * from spire.doc.common import * # Create a Document object doc = Document() # Load a Word document doc.LoadFromFile("Sample.docx") # Get the first section section = doc.Sections[0] # Enable different headers and footers for the first page and other pages section.PageSetup.DifferentFirstPageHeaderFooter = True # Add a paragraph to the first page header and set its alignment style headerParagraph = section.HeadersFooters.FirstPageHeader.AddParagraph() headerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Right # Add an image to the header paragraph headerimage = headerParagraph.AppendPicture("E-iceblue.png") # Add a paragraph to the first page footer and set its alignment style footerParagraph = section.HeadersFooters.FirstPageFooter.AddParagraph() footerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center # Add text to the footer paragraph and set its font style text = footerParagraph.AppendText("Different First Page Footer") text.CharacterFormat.FontSize = 11 # Set the header & footer for other pages. If you only headers & footers for the first page, don't set this. para = section.HeadersFooters.Header.AddParagraph() para.Format.HorizontalAlignment = HorizontalAlignment.Left paraText = para.AppendText("A Professional Word Python API") paraText.CharacterFormat.FontSize = 12 paraText.CharacterFormat.TextColor = Color.get_DeepPink() para.Format.Borders.Bottom.BorderType = BorderStyle.Single para.Format.Borders.Bottom.Space = 0.05 paragraph = section.HeadersFooters.Footer.AddParagraph() paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center paraText = paragraph.AppendText("E-iceblue Co. Ltd.") paraText.CharacterFormat.FontSize = 12 paraText.CharacterFormat.Bold = True paraText.CharacterFormat.TextColor = Color.get_DodgerBlue() # Save the result document doc.SaveToFile("DifferentFirstPage.docx", FileFormat.Docx) doc.Close()
Add Different Headers and Footers for Odd and Even Pages in Word in Python
To have different headers and footers on odd and even pages, Spire.Doc for Python provides the Section.PageSetup.DifferentOddAndEvenPagesHeaderFooter property. The following are the detailed steps.
- Create a Document object.
- Load a Word document using Document.LoadFromFile() method.
- Get a specified section using Document.Sections[] property.
- Enable different headers and footers for the odd and even pages by setting the Section.PageSetup.DifferentOddAndEvenPagesHeaderFooter property to True.
- Get the header and footer of odd pages using Section.HeadersFooters.OddHeader and Section.HeadersFooters.OddFooter properties.
- Add paragraphs to the header and footer of odd pages and then add text to them.
- Get the header and footer of even pages using Section.HeadersFooters.EvenHeader and Section.HeadersFooters.EvenFooter properties.
- Add paragraphs to the header and footer of even pages and then add text to them.
- Save the result document using Document.SaveToFile() method.
- Python
from spire.doc import * from spire.doc.common import * # Create a Document object doc = Document() # Load a Word document doc.LoadFromFile("Sample.docx") # Get the first section section = doc.Sections[0] # Enable different headers and footers for the odd and even pages section.PageSetup.DifferentOddAndEvenPagesHeaderFooter = True # Add headers and footers to odd pages OHpara = section.HeadersFooters.OddHeader.AddParagraph() OHtext = OHpara.AppendText("Odd Page Header") OHpara.Format.HorizontalAlignment = HorizontalAlignment.Center OHtext.CharacterFormat.FontName = "Arial" OHtext.CharacterFormat.FontSize = 12 OHtext.CharacterFormat.TextColor = Color.get_Red() OFpara = section.HeadersFooters.OddFooter.AddParagraph() OFtext = OFpara.AppendText("Odd Page Footer") OFpara.Format.HorizontalAlignment = HorizontalAlignment.Center OFtext.CharacterFormat.FontName = "Arial" OFtext.CharacterFormat.FontSize = 12 OFtext.CharacterFormat.TextColor = Color.get_Red() # Add headers and footers to even pages EHpara = section.HeadersFooters.EvenHeader.AddParagraph() EHtext = EHpara.AppendText("Even Page Header") EHpara.Format.HorizontalAlignment = HorizontalAlignment.Center EHtext.CharacterFormat.FontName = "Arial" EHtext.CharacterFormat.FontSize = 12 EHtext.CharacterFormat.TextColor = Color.get_Blue() EFpara = section.HeadersFooters.EvenFooter.AddParagraph() EFtext = EFpara.AppendText("Even Page Footer") EFpara.Format.HorizontalAlignment = HorizontalAlignment.Center EFtext.CharacterFormat.FontName = "Arial" EFtext.CharacterFormat.FontSize = 12 EFtext.CharacterFormat.TextColor = Color.get_Blue() # Save the result document doc.SaveToFile("OddAndEvenHeaderFooter.docx", FileFormat.Docx) doc.Close()
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.