Python轻松实现在PDF中插入页眉页脚

 更新时间:2025年10月26日 08:35:12   作者:E-iceblue  
在 PDF 中自动添加页眉页脚,可以让文档更规范、更具识别度,本文将使用Spire.PDF for Python实现简单快速地处理 PDF 文件相关的各种任务,需要的可以了解下

在制作 PDF 文件时,我们常常会遇到一个问题:文件内容虽然齐全,但少了页眉页脚,显得不够专业。尤其是在生成报告、论文或合同等正式文档时,如果页面上都没有标题、页码或公司名称,不仅阅读不便,还容易造成混淆。其实,这类问题完全可以用 Python 来快速解决——只需要简单的代码,就能在 PDF 中自动添加页眉页脚,让文档更规范、更具识别度。接下来,我们就来看看具体该怎么做。

本文中使用 Spire.PDF for Python,这个专业的 PDF 库可以协助开发者简单快速地处理 PDF 文件相关的各种任务,是 Adobe Acrobat 的优选替代方案。

Python 在 PDF 中插入页眉

在 PDF 页面上添加页眉不仅能让文档更具专业感,还能提高阅读与管理的效率。比如在页眉中加入公司 logo、报告标题或页码,读者就能轻松识别文件来源并快速定位内容。使用 Spire.PDF 提供的 PdfCanvas,你可以灵活地将文字、图片或日期等信息绘制到指定位置,通过坐标精确控制布局与样式。相比手动逐页添加,程序化生成页眉不仅节省时间,还能保持版式一致。下面我们将介绍具体的实现步骤,并附上完整的代码示例。

  • 创建 PdfDocument 对象,并使用 PdfDocument.LoadFromFile() 方法加载现有的 PDF 文件。
  • 使用 PdfImage.FromFile() 导入要绘制到页眉的图片,并获取图片宽度以便后续定位。
  • 定义 PdfTrueTypeFontPdfBrushesPdfPen 等属性,用于设置文本、图形和线条的样式。
  • 定义一个 String 类型的页眉文本内容。
  • 创建 PdfCreationDateField() 对象,并设置日期格式。
  • 创建 PdfCompositeField() 对象,组合文本与日期内容,并将其转换为 PdfGraphicsWidget 类型。
  • 遍历 PDF 的每一页,依次调用 PdfCanvas.DrawString()PdfCanvas.DrawImage()PdfCanvas.DrawLine()PdfGraphicsWidget.Draw() 方法绘制页眉内容。
  • 使用 PdfDocument.SaveToFile() 方法保存修改后的 PDF 文件。

下方为代码示例,展示了怎样在 Python 中为一个现有的 PDF 文件添加页眉:

from spire.pdf.common import *
from spire.pdf import *

# 创建 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文件
doc.LoadFromFile("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf")

# 加载页眉图片
headerImage = PdfImage.FromFile("F:/备用图片/Logo1.png")

# 获取图片point宽度值
width = headerImage.Width
unitCvtr = PdfUnitConvertor()
pointWidth = unitCvtr.ConvertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point)

# 设置字体,画刷和画笔
font = PdfTrueTypeFont("宋体", 12.0, PdfFontStyle.Bold, True)
brush = PdfBrushes.get_Purple()
pen = PdfPen(brush, 1.0)

# 设置页眉文本
headerText = "页眉文本示例\nwww.sampleheader.cn"

# 设置创建时间字段格式
creationDateField = PdfCreationDateField(font, brush)
creationDateField.DateFormatString = "yyyy-MM-dd"

# 创建组合字段
compositeField = PdfCompositeField(font, brush, "创建时间: {0}", [creationDateField])
compositeField.Location=PointF(55.0,48.0)
graphicsWidget = PdfGraphicsWidget(compositeField)

# 循环遍历文档中的每一页
for i in range(doc.Pages.Count):
    # 获取指定页面
    page = doc.Pages[i]  

    # 在指定位置绘制页眉图片
    page.Canvas.DrawImage(headerImage, page.ActualSize.Width - pointWidth - 55.0, 20.0)

    # 在指定位置绘制页眉文本
    page.Canvas.DrawString(headerText, font, brush, 55.0, 20.0)

    # 绘制页眉线条
    page.Canvas.DrawLine(pen, 55.0, 70.0, page.ActualSize.Width - 55.0, 70.0)

    # 绘制组合字段
    graphicsWidget.Draw(page.Canvas)

# 保存文件
doc.SaveToFile("E:/Administrator/Python1/output/结果.pdf")

# 释放文档对象
doc.Dispose()

下方为该代码输出的结果文件示意图:

Python 在 PDF 中添加页脚

页脚通常包含 PDF 文档的页码信息、版权声明、作者或公司名称等内容,这些信息能帮助读者了解文档来源并保持格式统一。通过页脚,读者还可以快速定位到特定页面或章节位置,尤其在阅读长篇报告、论文或合同时尤为方便。在 Spire.PDF 中,页脚的绘制同样依赖 PdfCanvas 方法,但由于其内容和布局与页眉不同,具体实现上会有一定差异。下面我们就来看看,在 Python 中如何为 PDF 添加页脚。

  • 创建 PdfDocument 对象,并通过 PdfDocument.LoadFromFile() 方法加载现有的 PDF 文件。
  • 使用 PdfImage.FromFile() 导入要绘制到页脚的图片。
  • 定义 PdfTrueTypeFontPdfBrushes 属性,用于设置文本绘制所需的字体和画刷样式。
  • 创建 PdfPageNumberField()PdfPageCountField() 对象,用于显示当前页码和总页数。
  • 使用 PdfCompositeField() 组合页码信息与其他文本内容,并将其转换为 PdfGraphicsWidget 类型。
  • 遍历 PDF 的每一页,调用 PdfCanvas.DrawImage()PdfGraphicsWidget.Draw() 方法绘制页脚内容。
  • 使用 PdfDocument.SaveToFile() 方法保存生成的 PDF 文件。

下方的代码示例展示了怎样在 Python 中添加页脚,包含了文档的页数页码和图片:

from spire.pdf.common import *
from spire.pdf import *

# 创建 PdfDocument 对象
doc = PdfDocument()

# 加载 PDF 文件
doc.LoadFromFile("E:/Administrator/Python1/input/AI绘画的利与弊-图片版.pdf")

# 加载页脚图片
footerImage = PdfImage.FromFile("F:/备用图片/banner.png")

# 设置字体,画刷
font = PdfTrueTypeFont("宋体", 12.0, PdfFontStyle.Bold, True)
brush = PdfBrushes.get_White()

# 创建页码,总页数字段域
pageNumberField = PdfPageNumberField()
pageCountField = PdfPageCountField()

# 创建组合字段域用于将页码和总页数合成一个字符串绘制
compositeField = PdfCompositeField(font, brush, "第 {0} 页,共 {1} 页", [pageNumberField, pageCountField])

# 设置组合字段域要绘制的位置
pageSize = doc.Pages[0].Size
fontSize = font.MeasureString(compositeField.Text)
compositeField.Location = PointF((pageSize.Width - fontSize.Width) / 2, pageSize.Height - 45.0)
graphicsWidget = PdfGraphicsWidget(compositeField)

# 循环遍历文档中的每一页
for i in range(doc.Pages.Count):
    # 获取指定页面
    page = doc.Pages[i]

    # 在指定位置绘制页脚图片
    page.Canvas.DrawImage(footerImage, 55.0, pageSize.Height - 65.0, pageSize.Width - 110.0, 50.0)

    # 在指定位置绘制页码组合字段
    graphicsWidget.Draw(page.Canvas)

# 保存文件
doc.SaveToFile("E:/Administrator/Python1/output/添加页脚.pdf")

# 释放文档对象
doc.Dispose()

这是使用 Spire.PDF 添加页码后的 PDF 示意图:

总结

通过以上步骤,我们可以轻松地在 PDF 文档中添加页眉和页脚,无论是公司 logo、标题、页码,还是日期和版权信息,都能实现高度自定义。借助 Spire.PDF 的绘图功能,你不仅能精确控制元素位置和样式,还能保持整份文档的排版一致性与专业外观。掌握这些方法后,你就能让生成的 PDF 更具结构化与品牌感,为报告、合同或技术文档增添专业水准。

到此这篇关于Python轻松实现在PDF中插入页眉页脚的文章就介绍到这了,更多相关Python PDF插入页眉页脚内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中的print()输出

    python中的print()输出

    print() 方法用于打印输出,最常见的一个函数。这篇文章主要介绍了python的print()输出 ,需要的朋友可以参考下
    2019-04-04
  • Python利用Redis计算经纬度距离案例

    Python利用Redis计算经纬度距离案例

    这篇文章主要介绍了Python利用Redis计算经纬度距离案例,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09
  • 分享15 超级好用得 Python 实用技巧

    分享15 超级好用得 Python 实用技巧

    这篇文章主要分享了15 超级好用得 Python 实用技巧,如果你对其中一个或多个感兴趣,可以参考一下,希望对你能有所帮助
    2021-12-12
  • Python基于百度API识别并提取图片中文字

    Python基于百度API识别并提取图片中文字

    本文主要实现了利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字。具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 用Python爬取某乎手机APP数据

    用Python爬取某乎手机APP数据

    最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数据,需要的朋友可以参考下
    2021-06-06
  • tensorflow可视化Keras框架中Tensorboard使用示例

    tensorflow可视化Keras框架中Tensorboard使用示例

    这篇文章主要为大家介绍了tensorflow可视化Keras框架中Tensorboard使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • pandas 实现将重复表格去重,并重新转换为表格的方法

    pandas 实现将重复表格去重,并重新转换为表格的方法

    下面小编就为大家分享一篇pandas 实现将重复表格去重,并重新转换为表格的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python双端队列deque的实现

    Python双端队列deque的实现

    双端队列deque支持从任意一端增加和删除元素。本文详细的介绍了Python双端队列deque的实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Python实现Word文档转换为图片(JPG、PNG、SVG等常见格式)

    Python实现Word文档转换为图片(JPG、PNG、SVG等常见格式)

    将Word文档以图片形式导出,既能方便信息的分享,也能保护数据安全,避免被二次编辑,文本将介绍如何使用 Spire.Doc for Python 库在Python程序中实现Word到图片的批量转换,需要的朋友可以参考下
    2024-06-06
  • Flask-Sqlalchemy的基本使用详解

    Flask-Sqlalchemy的基本使用详解

    本文主要介绍了Flask-Sqlalchemy的基本使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论