使用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添加附件与附件注释内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pip安装时ReadTimeoutError的解决方法

    pip安装时ReadTimeoutError的解决方法

    今天小编就为大家分享一篇pip安装时ReadTimeoutError的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Django命名URL和反向解析URL实现解析

    Django命名URL和反向解析URL实现解析

    这篇文章主要介绍了Django命名URL和反向解析URL实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python读取中文路径出现乱码问题的解决方案

    Python读取中文路径出现乱码问题的解决方案

    小编在使用opencv读取带有中文路径的图片时,发现会出现乱码的情况,当读取的文件路径出现中文时,(文件夹名为中文或者文件为中文)出现错误,所以本文给大家介绍了Python读取中文路径出现乱码问题的解决方案,需要的朋友可以参考下
    2024-06-06
  • Python常见的函数及格式化输出

    Python常见的函数及格式化输出

    这篇文章主要介绍了Python常见的upper()、lower()、title()等函数,感兴趣的朋友可以一起来学习学习文章内容
    2021-09-09
  • Python获取Excel文件行数的方法

    Python获取Excel文件行数的方法

    在数据分析和自动化办公领域,Python 因其简洁的语法和强大的库支持而广受欢迎,特别是当涉及到处理 Excel 文件时,Python 提供了多种库来简化这一过程,本文给大家介绍了如何使用Python获取 Excel 文件的行数,感兴趣的小伙伴跟着小编一起来看看吧
    2024-09-09
  • 六个窍门助你提高Python运行效率

    六个窍门助你提高Python运行效率

    这篇文章主要介绍了六个窍门助你提高Python运行效率,本文讲解了关键代码使用外部功能包、在排序时使用键、针对循环的优化、使用较新的Python版本等优化窍门,需要的朋友可以参考下
    2015-06-06
  • Python中JSON数据处理的完整指南

    Python中JSON数据处理的完整指南

    本文将把目光投向现实世界最通用的数据语言——JSON,API、配置、数据库,处处都有它的身影,五分钟掌握 Python 内置 json 模块,读写解析一气呵成
    2025-08-08
  • Python语言中的数据类型-序列

    Python语言中的数据类型-序列

    这篇文章主要介绍了Python语言中的数据类型-序列,前面我们提到了Python数据类型中的内置数值类型与字符串类型。今天学习一下Python的序列数据类型,要知道的是在Python中没有数组这一数据结构,需要的朋友可以参考一下
    2022-02-02
  • Python连接Mysql进行增删改查的示例代码

    Python连接Mysql进行增删改查的示例代码

    这篇文章主要介绍了Python连接Mysql进行增删改查的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python使用lxml库高效解析HTML/XML文档的全面指南

    Python使用lxml库高效解析HTML/XML文档的全面指南

    lxml是Python中最高效的XML/HTML处理库,结合了ElementTree的简单API和libxml2/libxslt的强大性能,本文给大家详细介绍了Python使用lxml库高效解析HTML/XML文档的全面指南,需要的朋友可以参考下
    2025-08-08

最新评论