星空最新网上盘口(官方)网站

国产化PDF处理控件Spire.PDF教程:使用 Python 向 PDF 添加文字(支持创建与编辑)

翻译|使用教程|编辑:吉炜炜|2025-07-17 11:34:08.500|阅读 2 次

概述:相比手动操作或依赖复杂工具,使用专业的 PDF 库能让你通过几行代码精准地控制文本位置、样式和内容。本文将借助功能强大的 Spire.PDF for Python 库,演示如何实现这些操作。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

在处理 PDF 时,向文档中添加文字是非常常见的场景,比如自动生成报告、插入批注说明、填写表单模板或添加版本标记等。借助 Python 向 PDF 插入文本,可以大幅提升文档处理的灵活性与自动化效率。

相比手动操作或依赖复杂工具,使用专业的 PDF 库能让你通过几行代码精准地控制文本位置、样式和内容。E-iceblue旗下Spire系列产品,是文档处理组件领域的佼佼者,支持国产化信创本文将介绍,如何借助功能强大的 Spire.PDF for Python 库,演示如何实现这些操作。

Spire.PDF for Python免费试用下载 

加入Spire技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。


环境准备:安装 Python PDF 库

开始前,请先安装 Spire.PDF for Python

pip install Spire.PDF

选择 Spire.PDF 的理由:

  • 无需安装 Acrobat 或其他办公软件
  • 支持精确控制文本样式与位置
  • 同时支持创建与修改 PDF
  • 跨平台兼容,适用于各种操作系统

创建新 PDF 并添加文字

如果你需要从零创建一个 PDF 文件并写入文字,以下示例展示了如何在空白页面中插入带有自定义样式的文本内容。

示例:创建空白 PDF 并插入文字

from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, RectangleF, \
    PdfStringFormat, PdfTextAlignment, PdfVerticalAlignment

# 创建一个新的 PDF 文档并添加一页
pdf = PdfDocument()
page = pdf.Pages.Add()

# 要绘制的文本内容(示例字符串)
text = ("本报告总结了 2025 年第一季度各类产品的销售表现。"
        + "以下是按产品类别划分的总销售额明细,"
        + "随后是各个地区的销售对比分析。")

# 设置字体、画刷和起始坐标点
font = PdfTrueTypeFont("微软雅黑", 14.0, PdfFontStyle.Regular, True)  # 使用 Arial 字体,14号,常规样式,嵌入字体
brush = PdfSolidBrush(PdfRGBColor(0, 0, 0))  # 使用黑色实心画刷
point = PointF(50.0, 100.0)  # 文本起始绘制坐标(未被实际使用)

# 设置文本布局区域和格式
layoutArea = RectangleF(50.0, 50.0, page.GetClientSize().Width - 100.0, page.GetClientSize().Height)
# 从页面距离左边 50、高度 50 的位置开始绘制文本,宽度为页面宽度减去两侧各 50 的边距,高度为整页高度

stringFormat = PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Top)
# 文本左对齐,垂直顶部对齐

# 在页面上绘制文本
page.Canvas.DrawString(text, font, brush, layoutArea, stringFormat, False)

# 保存 PDF 文件并关闭文档
pdf.SaveToFile("output/new.pdf")
pdf.Close()

要点说明:

  • 使用 PdfTrueTypeFont() 加载系统字体,支持字体大小与样式配置。
  • 通过 PdfSolidBrush() 设置文本颜色,例如 (0, 0, 0) 表示黑色。
  • 使用 RectangleF() 定义文本绘制区域,支持自动换行。
  • 通过 PdfStringFormat() 控制文字对齐方式。
  • 使用 DrawString() 在页面指定位置绘制文字,不影响其他内容。

生成的 PDF 文件:

使用Python创建新PDF插入文本

提示: 若有多段文字或需手动换行,可调整 Y 坐标或多次调用 DrawString() 分段插入。

向已有 PDF 添加文字

若你希望在现有 PDF 文档中添加文字,可通过加载 PDF、定位页面,并指定位置插入文本。

常见应用场景:

  • 添加注释或说明
  • 标记文档处理状态(如“已审核”、“作废”)
  • 向模板中填入信息字段

示例:在已有 PDF 页面中添加文字

from spire.pdf import PdfDocument, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, PdfCjkStandardFont, PdfCjkFontFamily

# 加载已有的 PDF 文档
pdf = PdfDocument()
pdf.LoadFromFile("input.pdf")  # 从文件加载 PDF
page = pdf.Pages[0]  # 获取第一页

# 设置字体为 Times Roman,字号 12,加粗
font = PdfCjkStandardFont(PdfCjkFontFamily.MonotypeHeiMedium, 16.0, PdfFontStyle.Bold)

# 使用红色画刷
brush = PdfSolidBrush(PdfRGBColor(255, 0, 0))  # 红色

# 设置文本绘制位置
location = PointF(150.0, 110.0)

# 在指定位置绘制文本
page.Canvas.DrawString("本文件已批准。", font, brush, location)

# 保存修改后的 PDF 文件
pdf.SaveToFile("output/modified.pdf")
pdf.Close()

要点说明:

  • LoadFromFile() 可加载本地 PDF 文档
  • 使用 pdf.Pages[index] 访问页面对象
  • 添加的内容以叠加形式呈现,不会修改原始内容
  • 文本位置由 PointF(x, y) 控制,坐标单位为磅(point)

保存的 PDF 文件:

使用Python载入PDF文件插入文本

通过调整坐标参数,即可灵活控制文本位置。

设置文本样式、位置、透明度与旋转

添加文本不仅仅是插入内容,更重要的是其呈现方式。Spire.PDF 支持多种文本样式控制,包括字体、颜色、对齐方式、透明度和旋转角度,常用于水印或提示标签。

设置字体与颜色

# 创建 PdfTrueTypeFont(使用系统中的 Calibri 字体,16号,斜体,嵌入字体)
font = PdfTrueTypeFont("Calibri", 16.0, PdfFontStyle.Italic, True)

# 创建 PdfFont(使用内置 Times Roman 字体,16号,斜体)
font = PdfFont(PdfFontFamily.TimesRoman, 16.0, PdfFontStyle.Italic)

# 创建 PdfBrush,用于设置文本绘制颜色
brush = PdfSolidBrush(PdfRGBColor(34, 139, 34))  # 森林绿(forest green)

PdfTrueTypeFont 支持将字体嵌入 PDF,确保在不同设备上显示一致。如需减小文件体积,可使用系统字体(不嵌入)。

设置透明度与旋转角度

# 保存当前画布状态
state = page.Canvas.Save()

# 设置半透明效果(0.0 = 完全透明,1.0 = 完全不透明)
page.Canvas.SetTransparency(0.4)

# 将原点移动到页面中心
page.Canvas.TranslateTransform(page.Size.Width / 2, page.Size.Height / 2)

# 将画布逆时针旋转 45 度
page.Canvas.RotateTransform(-45)

# 在新的原点位置绘制文本
page.Canvas.DrawString("草稿", font, brush, PointF(-50, -20))

透明度与旋转角度的结合,常用于创建水印、对角标记等视觉效果。

示例:添加居中斜体水印

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 = "请勿外传此文档"  # 将 "Confidential" 翻译为中文“机密”

# 创建字体(微软雅黑,40号,加粗,嵌入字体)
font = PdfTrueTypeFont("微软雅黑", 40.0, PdfFontStyle.Bold, True)

# 创建画刷(深蓝色)
brush = PdfSolidBrush(PdfRGBColor(Color.get_DarkBlue()))

# 测量文字尺寸以计算居中位置
size = font.MeasureString(text)
x = (page.Canvas.ClientSize.Width - size.Width) / 2
y = (page.Canvas.ClientSize.Height - size.Height) / 2

# 保存当前画布状态
state = page.Canvas.Save()

# 设置透明度为 0.3(30% 不透明)
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 文件
pdf.SaveToFile("output/with_watermark.pdf")
pdf.Close()

常用于生成自动水印文字,如 “CONFIDENTIAL”、“COPY” 等,可灵活用于批量处理。

生成的 PDF 文件:

使用Python在PDF文件中插入水印文字

文件正在被其他程序占用,保存时可能遇到 PermissionError。

常见问题与跨平台注意事项

在不同平台或字体环境下添加文本时,可能会遇到如下问题。以下是一些常见问题及解决建议:

问题 可能原因 解决方案
文本位置偏差 坐标设置未考虑页面尺寸 使用 ClientSize 或 MeasureString() 实现动态适配
字体无法显示 缺少对应字体或不支持字符集 嵌入常用字体如 Arial Unicode,或使用 Noto Sans 等 Unicode 字体
Unicode 字符乱码 字体不支持全字符集 使用支持广泛字符集的字体并嵌入
内容重叠 行距或位置设置不当 使用 MeasureString() 计算文本高度,合理设置 Y 坐标
出现水印文字 使用试用版未授权 使用免费版本,或申请临时授权
文件体积变大 嵌入字体增加文件大小 如不需跨设备显示一致性,可使用不嵌入字体的 PdfFont
macOS/Linux 显示异常 系统字体差异或度量方式不同 携带字体文件,或使用跨平台字体以确保一致性

总结

通过 Spire.PDF for Python,你可以灵活地实现 PDF 文档的文字添加,无论是新建文档、修改现有文件,还是批量处理。该库提供丰富的样式与位置控制选项,适用于自动化报告、水印标注、模板填充等多种场景。

常见问题(FAQ)

如何用 Python 向 PDF 添加文字?

使用如 Spire.PDF 等库,通过 DrawString() 方法添加文字,并可设置字体、颜色和位置等属性。

能否向已有 PDF 添加文字?

当然可以。加载 PDF 后通过页面对象调用 DrawString() 添加内容即可。

如何将文本文件内容转换成 PDF?

逐行读取 TXT 文件内容,结合 DrawString() 方法按需写入 PDF 页面。

可以批量向多个 PDF 添加相同的内容吗?

可以。遍历文件目录,对每个 PDF 分别加载并插入指定文字即可完成批量处理。

————————————————————————————————————————

关于慧都科技:

慧都科技是一家行业数字化解决方案公司,长期专注于软件、油气与制造行业。公司基于深入的业务理解与管理洞察,以系统化的业务建模驱动技术落地,帮助企业实现智能化运营与长期竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技E-iceblue的官方授权代理商,提供E-iceblue系列产品免费试用,咨询,正版销售等于一体的专业化服务E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化信创,帮助企业高效构建文档处理的应用程序。

欢迎下载|体验更多E-iceblue产品

获取更多信息请咨询 ;技术交流Q群(125237868



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ningjinzhiyuan.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
Spire.PDF for .NET

Spire.PDF for .NET是独立的PDF控件,用于.NET程序中创建、编辑和操作PDF文档

Spire.PDF for Python

Spire.PDF for Python是一个专业的 PDF 开发组件

Spire.PDF for Java

独立专业的Java PDF组件,覆盖PDF文档生成、处理、转换等功能。

Spire.Office for .NET

专业的.NET Office套件,涵盖office文档创建、编辑、转换、管理和OCR内容识别等操作

Spire.Office for Python

Spire.Office for Python 是用于办公文档处理的专业 Python API

title
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP