一文详解如何使用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, PointF from 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) / 2 y = (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元,即可下载本站文章涉及的文件和软件。