pdf 文档页眉页脚可以包含诸多信息,例如公司标识、徽标、日期、页码、联系信息、文章标题、作者姓名、案件编号、凯发线上登陆下载网址的版权声明等等,pdf 文档中添加含有此类信息的页眉和页脚可使其更具可读性和专业性,同时当读者阅读长篇文档时,也可以提供导航和定位功能,简化阅读体验。总的来说,添加页眉和页脚是一种优化 pdf 文档的方法,有助于满足特定需求并增强文档的可用性。本文将介绍如何使用 spire.pdf for python 在现成 pdf 中添加页眉页脚。
安装 spire.pdf for python
本教程需要 spire.pdf for python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 vs code 中。
pip install spire.pdf
如果您不确定如何安装,请参考此教程: 如何在 vs code 中安装 spire.pdf for python
背景知识
在现成的 pdf 页面中,坐标体系设定如下:
- 坐标原点是页面的左上角定点。
- x 轴正半轴向右延伸,y 轴负半轴向下延。
spire.pdf for python 提供 pdfcanvas.drawstring(),pdfcanvas.drawimage(),pdfcanvas.drawline() 等方法在页面的指定区域添加图片、文字或横线等内容,同时也支持创建 pdfcompositefield,pdfcreationdatefield,pdfpagenumberfield,pdfsectionnumberfield 等字段域,添加页码,创建时间,章节等动态数据至 pdf 的页面。
python 在现成 pdf 中添加页眉
以下步骤是使用 spire.pdf for python 在现成 pdf 文档中添加文本、图片和创建日期内容的页眉:
- 新建 pdfdocument 对象。
- 使用 pdfdocument.loadfromfile() 加载 已有 pdf 文件。
- 使用 pdfimage.fromfile() 加载要绘制到页眉的图片,并使用获取其宽度。
- 定义 pdftruetypefont,pdfbrushes,pdfpen 属性参数用于绘制文本和形状要使用的字体、画刷和画笔。
- 定义 string 类型的页眉文本内容。
- 创建 pdfcreationdatefield() 对象并设置其日期格式。
- 创建 pdfcompositefield() 对象设置组合格式并转换为 pdfgraphicswidget 类型。
- 遍历pdf每页调用pdfcanvas.drawstring(),pdfcanvas.drawimage(),pdfcanvas.drawline(),以及 pdfgraphicswidget.draw() 进行页眉内容的绘制。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建 pdfdocument 对象
doc = pdfdocument()
# 加载 pdf 文件
doc.loadfromfile("输入文档.pdf")
# 加载页眉图片
headerimage = pdfimage.fromfile("header.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.e-iceblue.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("结果.pdf")
# 释放文档对象
doc.dispose()
python 在现成 pdf 中添加页脚
以下步骤是使用 spire.pdf for python 在现成 pdf 文档中添加图片和页码字段内容的页脚:
- 新建 pdfdocument 对象。
- 使用 pdfdocument.loadfromfile() 加载 已有 pdf 文件。
- 使用 pdfimage.fromfile() 加载要绘制到页脚的图片。
- 定义 pdftruetypefont,pdfbrushes 属性参数用于绘制文本要使用的字体和画刷。
- 创建 pdfpagenumberfield() 和 pdfpagecountfield() 对象。
- 创建 pdfcompositefield() 对象设置组合格式并转换为 pdfgraphicswidget 类型。
- 遍历pdf每页调用 pdfcanvas.drawimage() 和 pdfgraphicswidget.draw() 进行页脚内容的绘制。
- 使用 pdfdocument.savetofile() 方法保存结果文件。
- python
from spire.pdf.common import *
from spire.pdf import *
# 创建 pdfdocument 对象
doc = pdfdocument()
# 加载 pdf 文件
doc.loadfromfile("输入文档.pdf")
# 加载页脚图片
footerimage = pdfimage.fromfile("footer.png")
# 设置字体,画刷
font = pdftruetypefont("宋体", 12.0, pdffontstyle.bold, true)
brush = pdfbrushes.get_purple()
# 创建页码,总页数字段域
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("结果.pdf")
# 释放文档对象
doc.dispose()
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。