一文详解如何使用Python向PDF精确添加文本!
一文详解如何使用Python向PDF精确添加文本!
PDF 文档的版式特性使其适用于输出不可变格式的报告与合同。但若要在此类文档中插入或修改文本,常规方式难以实现。借助Python,我们可以高效地向 PDF 添加文本,实现从文档生成到内容管理的自动化流程。
本文将从以下方面介绍Python实现PDF中文本的添加:
本文使用的方法需要用到免费的Free Spire.PDF for Python,可通过pip安装:
|
1
|
pip install spire.pdf.free |
新建PDF并添加段落文本
在构建系统报告或生成模板文档时,通常需要从空白页插入一段段文本,保持排版一致性。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, RectangleF, \PdfStringFormat, PdfTextAlignment, PdfVerticalAlignment# 创建新的PDF文档并添加页面pdf = PdfDocument()page = pdf.Pages.Add()# 待插入的文本内容text = ("The purpose of this document is to provide an overview of the company's financial highlights for the fiscal year 2024. ""It includes revenue trends, operational costs, and net income summaries. ""The following sections will outline each metric in more detail.")# 设置字体、画刷(颜色)和排版区域font = PdfTrueTypeFont("Arial", 14.0, PdfFontStyle.Regular, True)brush = PdfSolidBrush(PdfRGBColor(0, 0, 0)) # 黑色文本layout_area = RectangleF(50.0, 50.0, page.GetClientSize().Width - 100.0, page.GetClientSize().Height)string_format = PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Top)# 添加文字内容page.Canvas.DrawString(text, font, brush, layout_area, string_format, False)# 保存并关闭pdf.SaveToFile("output/new.pdf")pdf.Close() |
技术细节说明:
PdfTrueTypeFont可嵌入外部字体文件,适用于需要控制字体兼容性的场景;RectangleF定义文本区域边界(支持自定义段落框);DrawString()支持超出区域自动换行;- 使用
PdfStringFormat设定水平方向与垂直方向的对齐方式。
生成的PDF文档:

向现有PDF中插入文本内容
当你已有一份PDF文件,但希望在某一页添加标记或文字说明,例如审批标语、状态说明等,可以使用如下方式:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
from spire.pdf import PdfDocument, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, PdfFont, PdfFontFamily# 加载已有PDF文档pdf = PdfDocument()pdf.LoadFromFile("PDF.pdf")page = pdf.Pages[0]# 设置字体、颜色和插入位置font = PdfFont(PdfFontFamily.TimesRoman, 12.0, PdfFontStyle.Bold)brush = PdfSolidBrush(PdfRGBColor(0, 128, 0)) # 深绿色location = PointF(130.0, 90.0)# 插入文本page.Canvas.DrawString("Verified by QA Department", font, brush, location)# 保存结果pdf.SaveToFile("output/ModifiedPDF.pdf")pdf.Close() |
技术细节说明:
PdfFontFamily.TimesRoman属于 PDF 标准内置字体(无需嵌入);- 坐标
PointF(x, y)单位为磅(1 pt ≈ 0.3528 mm),以页面左上角为 (0,0); - 无需设置区域框时,适用于短文本、标签插入、动态盖章等场景。
修改的PDF文档:

复杂格式设置:添加透明旋转水印文本
在文档审阅或内部版本发布场景中,常见的做法是添加一个带透明度与旋转角度的水印文字,以提示机密性或防止误传播。Spire.PDF 提供了画布状态保存、旋转、透明度控制等接口,可用于实现这种复杂的格式需求。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointFfrom spire.pdf.common import Color# 加载已有PDF文档pdf = PdfDocument()pdf.LoadFromFile("input1.pdf")page = pdf.Pages[0]# 设置水印文本内容text = "Internal Use Only"# 设置字体样式与大小font = PdfTrueTypeFont("Arial", 40.0, PdfFontStyle.Bold, True)# 设置画刷颜色为深红色brush = PdfSolidBrush(PdfRGBColor(Color.get_DarkRed()))# 测量文本大小以便居中放置size = font.MeasureString(text)x = (page.Canvas.ClientSize.Width - size.Width) / 2y = (page.Canvas.ClientSize.Height - size.Height) / 2# 保存当前画布状态state = page.Canvas.Save()# 设置透明度page.Canvas.SetTransparency(0.3)# 平移至文本中心位置page.Canvas.TranslateTransform(x + size.Width / 2, y + size.Height / 2)# 旋转文本(-45度斜着显示)page.Canvas.RotateTransform(-45.0)# 绘制文本水印(左上角为起始点,因此需偏移)page.Canvas.DrawString(text, font, brush, PointF(-size.Width / 2, -size.Height / 2))# 恢复画布状态page.Canvas.Restore(state)# 保存文档pdf.SaveToFile("output/with_watermark.pdf")pdf.Close() |
技术细节说明:
- 使用
SetTransparency(0.3)设置文本透明度,增强水印效果但不遮挡内容; TranslateTransform()将画布原点移动至文本中心;RotateTransform(-45)实现对角线旋转,常用于“CONFIDENTIAL”或“DRAFT”类水印;- 水印文本使用
DrawString()绘制,PointF(-size.Width / 2, -size.Height / 2)保证以中心为参考点; - 通过
Canvas.Save()与Canvas.Restore()管理局部画布状态,避免影响页面中其他元素。
修改后的PDF文档:

总结
通过 Spire.PDF for Python,你可以使用简洁的 Python 代码在 PDF 中添加各类文本,功能包括:
| 功能项 | 方法与说明 |
|---|---|
| 从零创建文档 | PdfDocument.Pages.Add() + DrawString() |
| 插入文本到现有文档 | LoadFromFile() + PointF 定位文本插入点 |
| 控制排版样式 | 使用 RectangleF + PdfStringFormat 控制对齐与区域 |
| 行文本支持 | 文本中添加 \n,自动换行渲染 |
| 字体与颜色控制 | 支持 TrueType 与 标准字体,自定义颜色 RGB |
这些操作覆盖了 PDF 文本添加的主要应用场景,从文档批量生成到人工标注支持,适合用于自动归档、审批流程、内容输出等业务场景。
到此这篇关于一文详解如何使用Python向PDF精确添加文本的文章就介绍到这了。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。
