Python 轻松在 PDF 中插入页眉页脚 - E

news/2025/10/24 16:08:46/文章来源:https://www.cnblogs.com/Yesi/p/19163659

在制作 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 中添加页眉

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 示意图:

Python 在 PDF 中添加页脚

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python---批量给视频添加片头片尾

在剪辑视频的时候,如果视频很少的情况可以考虑自己使用软件来拼接一下,但是如果要给几百个视频加片头片尾,那就需要使用软件来加了。 基础代码示例:from moviepy.editor import VideoFileClip, concatenate_videoc…

上海AI优化:AI优化公司技术革新与行业标杆解析

上海AI优化企业新势力:解码智能流量时代的制胜密码 AI优化企业技术革新与行业标杆解析 AI优化企业如何重构搜索生态竞争格局 一、AI优化企业排行榜:技术驱动下的头部阵营 在AI重构搜索生态的2025年,上海及周边地区的…

2025 年隔离变压器厂家最新推荐榜:结合中国电力设备行业协会测评权威数据,精选实力企业深度解析船用/三相伺/医疗专用隔离变压器公司推荐

引言 在工业生产、新能源、医疗设备等领域,隔离变压器对保障电力系统稳定、规避电气干扰至关重要,市场需求逐年攀升。但行业内厂家良莠不齐,产品质量与定制能力差异显著。据中国电力设备行业协会 2025 年最新测评数…

ContextCapture无人机影像与激光点云融合建模感受

1.一直对空地融合和无人机与激光点云融合抱有很大的期待,限于没有很好的激光点云设备,一直没有实验看看结果如何。 最近入手了一台RS10,终于有高精度带地理坐标的激光点云数据了,然后就实验了一下。 2.首先遇到的一…

MongoDB 与其他数据库(如 Redis、Elasticsearch、PostgreSQL)对比

-----------------------------------------------------------------------------------------看起来你想了解 MongoDB 和其他数据库的对比,但未明确具体对比对象。我先帮你梳理 MongoDB 的核心特性,并默认对比最常…

一行命令让你修改博客上的粉丝数

在日常浏览网页时,你是否曾想过直接修改页面上的文字、调整排版,甚至临时编辑内容用于演示或截图?其实无需复杂的开发工具,只需一行简单的 JavaScript 命令,就能让任意网页瞬间变成可编辑状态 —— 这就是documen…

数据库分类详解

数据库主要分为关系型、时序型、NoSQL型三大类。关系型数据库(如MySQL)采用二维表结构,支持SQL和ACID事务,适合业务系统核心数据。时序数据库(如InfluxDB)专为时间序列数据优化,适用于监控和IoT场景。NoSQL数据…

2025年护栏厂家权威推荐榜单:不锈钢栏杆/桥梁防撞护栏/河道景观护栏,专业设计与安全防护全解析

2025年护栏厂家权威推荐榜单:不锈钢栏杆/桥梁防撞护栏/河道景观护栏,专业设计与安全防护全解析 护栏作为基础设施和建筑工程中不可或缺的安全防护设施,在城市化进程和基础设施建设中发挥着日益重要的作用。随着现代…

2025年发电机厂家推荐排行榜,发电机组出租,柴油发电机出租,甲醇发电机组租赁,移动式发电机出租,发电机组维修保养,专业可靠之选

2025年发电机厂家推荐排行榜:发电机组出租、柴油发电机出租、甲醇发电机组租赁、移动式发电机出租、发电机组维修保养专业可靠之选 行业背景与发展趋势 随着我国基础设施建设的持续推进和能源结构的优化调整,发电设备…

执行计划解释

执行计划解释 MySQL执行计划中的type和extra列是分析查询性能的关键指标: type列解析type列表示MySQL访问表数据的方式,按效率从高到低排序如下:‌system‌:表仅一行数据(系统表特例) ‌const‌:通过主键或唯一…

MATLAB中的Excel文件操作:从入门到精通 - 指南

MATLAB中的Excel文件操作:从入门到精通 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

2025 年保护罩生产厂家最新推荐榜:技术与服务双重测评,精选优质品牌权威指南PVC 法兰保护罩/不锈钢法兰保护罩/设备保护罩公司推荐

工业保护罩作为设备安全防护的核心部件,其性能直接关系到化工、石油等行业的生产安全与运营成本。为破解企业选型难题,本次榜单联合中国工业防护装备协会开展专项测评,基于 GB/T 标准及 ASTM 规范,对 126 家企业进…

Flannel 为 Kubernetes 集群中的容器提供了多种网络通信模式

Flannel 为 Kubernetes 集群中的容器主要提供了三种网络通信模式:VXLAN、host-gw 以及 UDP 。它们在工作原理和性能上有所不同,你可以根据实际的网络环境和需求进行选择。 下面这个表格整理了这三种核心模式的关键信…

linux 查看防火墙放开的端口

目录1. 使用 firewalld(推荐用于 CentOS/RHEL/Fedora)2. 使用 ufw(Ubuntu 系统常见)3. 使用 iptables(传统工具,或底层驱动)4. 使用 netstat 或 ss 查看正在监听的端口(系统级)总结在 Linux 系统中,查看防火…

在nginx中通过多级代理支持grpc协议

本文分享自天翼云开发者社区《在nginx中通过多级代理支持grpc协议》.作者:尹****聪 gRPC 是由 Google 开源的一个 RPC 框架,旨在统一服务间通信的方式。该框架基于 HTTP/2 协议传输,使用 Protocol Buffers 作为接口…

Python---批量去视频的片头和片尾

在需要对视频进行批量处理的时候,常见的就是批量去视频的片头和片尾: 具体代码示例:import os import re import time import subprocess from decimal import Decimal from multiprocessing import Poolpath = rE:…

Linux下的拼音输入法 (1)

我用的是Debian 12 KDE. 国内互联网厂的拼音输入法装了都不能用:可以理解,这哪有做游戏等挣钱啊。 用了半年的sunpinyin,会用程序往用户词典里加词 (在系列2里贴代码)。 今天折腾了一通输入法,把KDE搞坏了,Ctrl…

Docker镜像与容器:轻松理解与实战 - 实践

Docker镜像与容器:轻松理解与实战 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

从数据孤岛到智能洞察:构建面向未来的 Operation intelligence 体系

在数字世界持续运转的过程中,系统每时每刻都在产生海量的数据。我们把这些数据统称为 Operation Data(运营数据)。它不仅记录着系统的运行状态,更蕴藏着驱动业务增长、保障系统稳定、防范安全风险的关键线索。更重…

2025年低合金钢铸件厂家权威推荐榜单:水泵类铸件/矿山机械铸件/阀门类铸件源头厂家精选。

在竞争激烈的制造业中,一家位于镇江、深耕行业二十余年的铸钢企业,以每年超8000吨的产量和远销海外的实力,正赢得全球工业客户的广泛认可。 在当今制造业蓬勃发展的时代,低合金钢铸件因其优异的机械性能和成本效益…