使用Python实现向同一PDF添加附件与附件注释

 更新时间:2025年11月03日 09:07:10   作者:Eiceblue  
在文档管理和报表生成中,将相关文件直接嵌入 PDF 可以大大提高信息整合度,让收件人无需额外查找即可访问所有资源,本文演示如何在 同一 PDF 文件中实现 直接添加附件和添加附件注释,希望对大家有所帮助

在文档管理和报表生成中,将相关文件直接嵌入 PDF 可以大大提高信息整合度,让收件人无需额外查找即可访问所有资源。Python 结合 Spire.PDF,可以轻松实现 PDF 附件的添加与注释功能,无需依赖 Adobe Acrobat。

本文演示如何在 同一 PDF 文件中实现 直接添加附件和添加附件注释,并说明每个操作的作用和适用场景,帮助你真正理解 PDF 附件处理的逻辑。

本文使用的方法需要用到免费的 Free Spire.PDF for Python,可通过 PyPI 安装:pip install spire.pdf

1. 初始化 PDF 文档

from spire.pdf import *
from spire.pdf.common import *

# PdfDocument 对象创建
doc = PdfDocument()

# 加载已有 PDF 文件
doc.LoadFromFile("Sample.pdf")

操作说明

  • PdfDocument 是 Spire.PDF 的核心类,用于表示和操作 PDF 文档。
  • LoadFromFile() 可以加载已有 PDF,后续的附件操作都基于这个文档进行。

2. 添加外部文件作为 PDF 附件

# 创建 PdfAttachment 对象
attachment_one = PdfAttachment("Antivirus Software.pdf")
attachment_two = PdfAttachment("Steps for Backup.png")

# 将附件添加到 PDF
doc.Attachments.Add(attachment_one)
doc.Attachments.Add(attachment_two)

# 保存文件
doc.SaveToFile("output/DocumentAttachment.pdf")

使用说明

  • PdfAttachment 用于封装需要添加的文件,包括 Excel、图片或其他文档。
  • Attachments.Add() 将附件嵌入 PDF,使所有相关文件集中在同一个 PDF 内。
  • 保存后,收件人可在 PDF 阅读器中直接查看或提取这些附件。

效果展示

适用场景

  • 发票或报表需要附带原始数据文件。
  • 项目文档需要附带图纸、图片或说明文件。
  • 任何需要将多种资源整合到单一 PDF 的场景。

3. 在 PDF 页面添加附件注释

# 获取特定页面
page = doc.Pages[1]

# 绘制文本
str = "This is the document: "
font = PdfTrueTypeFont("Yu Gothic UI", 16.0, PdfFontStyle.Bold, True)
x = 50.0
y = doc.Pages[0].ActualSize.Height - 30.0
page.Canvas.DrawString(str, font, PdfBrushes.get_Blue(), x, y)

# 创建 PdfAttachmentAnnotation
data = Stream("G:/Documents/Update System.docx")
size = font.MeasureString(str)
bounds = RectangleF((x + size.Width + 5.0), y, 10.0, 15.0)
annotation = PdfAttachmentAnnotation(bounds, "Update System.docx", data)

# 设置注释属性
annotation.Color = PdfRGBColor(Color.get_Blue())
annotation.Flags = PdfAnnotationFlags.Default
annotation.Icon = PdfAttachmentIcon.Graph
annotation.Text = "Click to open"

# 添加到 PDF 页面
page.AnnotationsWidget.Add(annotation)

# 保存文件
doc.SaveToFile("output/AnnotationAttachment.pdf")

操作说明

  • PdfAttachmentAnnotation 可以在 PDF 页面上显示附件图标,用户点击即可打开附件。
  • bounds 定义注释的位置和大小。
  • ColorIconText 用于美化和提示操作。
  • AnnotationsWidget.Add() 将注释添加到页面上。

效果展示

适用场景

  • 报告正文中嵌入支持文件,让读者点击即可获取。
  • 教学或培训资料中附加示例文件。
  • 需要对附件做视觉提示而非仅仅嵌入 PDF 时。

4. 总结

通过上述操作,开发者可以轻松实现:

功能类型关键类/方法使用说明
添加附件PdfAttachment、Attachments.Add()将外部文件直接嵌入 PDF
添加附件注释PdfAttachmentAnnotation、AnnotationsWidget.Add()在页面上显示附件图标并可点击打开
设置字体与颜色PdfTrueTypeFont、PdfBrushes为页面文本提供美观的显示
保存 PDFSaveToFile()保存修改后的 PDF 文件

通过结合附件和注释,PDF 不仅可以承载文本内容,还可以携带完整的支持文件,大大提升文档的完整性和易用性。

到此这篇关于使用Python实现向同一PDF添加附件与附件注释的文章就介绍到这了,更多相关Python PDF添加附件与附件注释内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现将元祖转换成数组的方法

    python实现将元祖转换成数组的方法

    这篇文章主要介绍了python实现将元祖转换成数组的方法,涉及Python中list方法的使用技巧,需要的朋友可以参考下
    2015-05-05
  • Python中类的继承代码实例

    Python中类的继承代码实例

    这篇文章主要介绍了Python中类的继承代码实例,本文直接给出代码及运行效果,需要的朋友可以参考下
    2014-10-10
  • python爬虫之爬取谷歌趋势数据

    python爬虫之爬取谷歌趋势数据

    这篇文章主要介绍了python爬虫之爬取谷歌趋势数据,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • pandas dataframe写入到hive方式

    pandas dataframe写入到hive方式

    这篇文章主要介绍了pandas dataframe写入到hive方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python+matplotlib实现绘制等高线图示例详解

    Python+matplotlib实现绘制等高线图示例详解

    在matplotlib.pyplot中除了可以绘制常规图表如折线、柱状、散点等,还可以绘制常用在地理上的平面展示地型的等高线图,本文主要为大家介绍了如何利用matplotlib绘制等高线图,需要的可以参考一下
    2021-12-12
  • Python爬虫之自动爬取某车之家各车销售数据

    Python爬虫之自动爬取某车之家各车销售数据

    应朋友要求,帮忙采集某车之家的一些汽车品牌的销售数据,包含购车时间、车型、经销商、裸车价等一类信息. 今天我们就简单演示一下采集过程,大家可以根据自己的兴趣进行拓展.比如采集自己喜欢的品牌汽车数据进行统计分析等等,需要的朋友可以参考下
    2021-06-06
  • Python 实例进阶之预测房价走势

    Python 实例进阶之预测房价走势

    买房应该是大多数都会要面临的一个选择,当前经济和政策背景下,未来房价会涨还是跌?这是很多人都关心的一个话题。今天分享的这篇文章,以波士顿的房地产市场为例,根据低收入人群比例、老师学生数量等特征,利用 Python 进行了预测,给大家做一个参考
    2021-11-11
  • pip下载安装时使用国内源配置方式

    pip下载安装时使用国内源配置方式

    这篇文章主要介绍了pip下载安装时使用国内源配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-04-04
  • 使用Python进行GRPC和Dubbo协议的高级测试

    使用Python进行GRPC和Dubbo协议的高级测试

    GRPC(Google Remote Procedure Call)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服务框架,常用于构建大规模的微服务架构,本文我们就来看看如何使用Python对二者进行测试吧
    2025-06-06
  • pycharm的console输入实现换行的方法

    pycharm的console输入实现换行的方法

    今天小编就为大家分享一篇pycharm的console输入实现换行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01

最新评论