没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吉炜炜|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技术交流QQ群(125237868),与更多开发者一起提升文档开发技能。
开始前,请先安装 Spire.PDF for Python:
pip install Spire.PDF
选择 Spire.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()
要点说明:
生成的 PDF 文件:
提示: 若有多段文字或需手动换行,可调整 Y 坐标或多次调用 DrawString() 分段插入。
若你希望在现有 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()
要点说明:
保存的 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 文件:
文件正在被其他程序占用,保存时可能遇到 PermissionError。
在不同平台或字体环境下添加文本时,可能会遇到如下问题。以下是一些常见问题及解决建议:
问题 | 可能原因 | 解决方案 |
---|---|---|
文本位置偏差 | 坐标设置未考虑页面尺寸 | 使用 ClientSize 或 MeasureString() 实现动态适配 |
字体无法显示 | 缺少对应字体或不支持字符集 | 嵌入常用字体如 Arial Unicode,或使用 Noto Sans 等 Unicode 字体 |
Unicode 字符乱码 | 字体不支持全字符集 | 使用支持广泛字符集的字体并嵌入 |
内容重叠 | 行距或位置设置不当 | 使用 MeasureString() 计算文本高度,合理设置 Y 坐标 |
出现水印文字 | 使用试用版未授权 | 使用免费版本,或申请临时授权 |
文件体积变大 | 嵌入字体增加文件大小 | 如不需跨设备显示一致性,可使用不嵌入字体的 PdfFont |
macOS/Linux 显示异常 | 系统字体差异或度量方式不同 | 携带字体文件,或使用跨平台字体以确保一致性 |
|
通过 Spire.PDF for Python,你可以灵活地实现 PDF 文档的文字添加,无论是新建文档、修改现有文件,还是批量处理。该库提供丰富的样式与位置控制选项,适用于自动化报告、水印标注、模板填充等多种场景。
使用如 Spire.PDF 等库,通过 DrawString() 方法添加文字,并可设置字体、颜色和位置等属性。
当然可以。加载 PDF 后通过页面对象调用 DrawString() 添加内容即可。
逐行读取 TXT 文件内容,结合 DrawString() 方法按需写入 PDF 页面。
可以。遍历文件目录,对每个 PDF 分别加载并插入指定文字即可完成批量处理。
————————————————————————————————————————
关于慧都科技:
慧都科技是一家行业数字化解决方案公司,长期专注于软件、油气与制造行业。公司基于深入的业务理解与管理洞察,以系统化的业务建模驱动技术落地,帮助企业实现智能化运营与长期竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。慧都科技E-iceblue的官方授权代理商,提供E-iceblue系列产品免费试用,咨询,正版销售等于一体的专业化服务。E-iceblue旗下Spire系列产品是国产文档处理领域的优秀产品,支持国产化信创,帮助企业高效构建文档处理的应用程序。
欢迎下载|体验更多E-iceblue产品
获取更多信息请咨询 ;技术交流Q群(125237868)
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ningjinzhiyuan.cn
文章转载自:慧都网相比手动操作或依赖复杂工具,使用专业的 PDF 库能让你通过几行代码精准地控制文本位置、样式和内容。本文将借助功能强大的 Spire.PDF for Python 库,演示如何实现这些操作。
本教程将为大家介绍如何使用MyEclipse创建企业应用项目目,欢迎下载最新版IDE体验!
本文主要介绍如何使用DevExpress WPF Grid控件完成节点排序和移动,欢迎下载最新版组件体验!
时间轴上的任务可视化有助于更好地管理项目。本文将学习如何使用Aspose.Cells for Python 通过 .NET在 Excel 中创建甘特图。只需几行代码,即可将简单的任务数据转换为动态清晰的可视化时间轴,非常适合用于报表、仪表板和规划文档。
Spire.PDF for .NET是独立的PDF控件,用于.NET程序中创建、编辑和操作PDF文档
Spire.PDF for PythonSpire.PDF for Python是一个专业的 PDF 开发组件
Spire.PDF for Java独立专业的Java PDF组件,覆盖PDF文档生成、处理、转换等功能。
Spire.Office for .NET专业的.NET Office套件,涵盖office文档创建、编辑、转换、管理和OCR内容识别等操作
Spire.Office for PythonSpire.Office for Python 是用于办公文档处理的专业 Python API
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ningjinzhiyuan.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢