尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Python操作PDF附件添加查看与管理指南

Python操作PDF附件添加查看与管理指南
📅 发布时间:2026/6/26 22:54:45

在日常文档处理工作中,PDF 附件功能有着广泛的应用场景。例如,将合同原文与相关证明材料打包在同一个 PDF 文件中,或在技术文档中附上对应的数据文件和图片。手动操作虽然可行,但当需要批量处理大量文档时,效率就会成为瓶颈。
使用 Python 可以通过编程方式高效地完成 PDF 附件的添加、读取和删除操作,适合集成到自动化工作流中。
环境准备
使用 Python 操作 PDF 文档需要安装 Spire.PDF 库:
bash 代码解读复制代码pip install Spire.PDF

这个库提供了完整的 PDF 文档处理 API,包括附件管理功能。
添加附件到 PDF 文档
向 PDF 中添加附件有两种常见方式:一种是作为文档级附件(类似邮件中的附件),另一种是作为页面上的附件注释(显示为可点击的图标)。
添加文档级附件
文档级附件会出现在 PDF 阅读器的附件面板中,不会直接显示在页面内容上:
python 代码解读复制代码from spire.pdf.common import *
from spire.pdf import *

# 加载 PDF 文档
doc = PdfDocument()
doc.LoadFromFile("input.pdf")

# 创建附件对象,参数为文件名
attachment = PdfAttachment("data.xlsx")

# 将文件数据读入附件
with open("data.xlsx", "rb") as f:
attachment.Data = f.read()

# 设置附件的描述信息和 MIME 类型
attachment.Description = "源数据表格"
attachment.MimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

# 将附件添加到文档
doc.Attachments.Add(attachment)

# 保存文档
doc.SaveToFile("output.pdf")
doc.Close()

关键 API 说明:

PdfAttachment:表示一个附件对象,构造函数中的参数是附件的显示名称
Data 属性:用于设置附件的二进制数据
MimeType 属性:指定附件的 MIME 类型,便于阅读器识别文件类型
Attachments.Add():www.ycsjb.com将附件添加到文档的附件集合中

添加附件注释
附件注释会在 PDF 页面中显示为图标(如回形针、图钉),读者可以直接点击打开:
python 代码解读复制代码from spire.pdf.common import *
from spire.pdf import *

doc = PdfDocument()
doc.LoadFromFile("input.pdf")
page = doc.Pages[0]

# 读取要附加的文件数据
with open("report.pdf", "rb") as f:
data = Stream(f.read())

# 创建附件注释
bounds = RectangleF(50.0, 100.0, 15.0, 15.0)
annotation = PdfAttachmentAnnotation(bounds, "report.pdf", data)
annotation.Color = PdfRGBColor(Color.get_Teal())
annotation.Icon = PdfAttachmentIcon.Paperclip
annotation.Text = "附件:详细报告"

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

doc.SaveToFile("output.pdf")
doc.Close()

附件注释支持多种图标样式,包括 Paperclip(回形针)、PushPin(图钉)、Graph(图表)和 Tag(标签)等,可以根据内容类型选择合适的图标。
读取和提取附件
当收到一个包含附件的 PDF 文档时,你可能需要查看附件信息或将附件提取出来。
获取所有附件信息
python 代码解读复制代码from spire.pdf.common import *
from spire.pdf import *

pdf = PdfDocument()
pdf.LoadFromFile("document_with_attachments.pdf")

# 获取附件集合
collection = pdf.Attachments

if collection.Count > 0:
for i in range(collection.Count):
attachment = collection.get_Item(i)
print(f"文件名: {attachment.FileName}")
print(f"描述: {attachment.Description}")
if attachment.CreationDate:
print(f"创建时间: {attachment.CreationDate}")
print("---")

pdf.Close()

提取附件到本地
python 代码解读复制代码from spire.pdf.common import *
from spire.pdf import *

pdf = PdfDocument()
pdf.LoadFromFile("document_with_attachments.pdf")

collection = pdf.Attachments

# 提取所有附件
for i in range(collection.Count):
attachment = collection.get_Item(i)
attachment.Data.Save(attachment.FileName)

# 或提取单个附件(例如第二个附件)
attachment = collection.get_Item(1)
attachment.Data.Save(attachment.FileName)

pdf.Close()

attachment.Data.Save() 方法会将附件数据直接保存为文件,文件名会自动使用附件原始名称。
删除附件
清理文档或重新打包时,可以移除 PDF 中不再需要的附件:
python 代码解读复制代码from spire.pdf.common import *
from spire.pdf import *

doc = PdfDocument()
doc.LoadFromFile("document_with_attachments.pdf")

# 删除所有附件
doc.Attachments.Clear()

doc.SaveToFile("cleaned.pdf")
doc.Close()

如果需要仅删除特定附件,可以通过索引获取后逐个处理,或者通过文件名匹配后移除。
实用提示

添加附件前,确认文件以二进制模式打开("rb"),否则可能导致数据损坏
为附件设置准确的 MIME 类型有助于 PDF 阅读器正确识别和处理附件内容
附件注释的 Flags 属性可以控制交互行为,如 ReadOnly 表示只读,Locked 表示锁定不可移动
文档级附件和附件注释可以同时存在,两者互不冲突

结论
本文介绍了使用 Python 在 PDF 文档中添加、提取和删除附件的基本方法。这些操作可以通过 Spire.PDF 的 API 轻松完成,适合嵌入到批量文档处理流程中。在此基础上,还可以进一步结合其他 PDF 操作(如页面合并、文本提取等)构建更复杂的文档自动化方案。

相关新闻

  • Three.js 赛博朋克风格 UI:3D 渲染管线与着色器艺术的工程实战
  • 为什么AI只引用2-7个网站?内容结构优化才是GEO的隐藏密码!
  • OpenAI 联合博通推出 Jalapeño 芯片,2026 年底前投入使用或减少对英伟达依赖

最新新闻

  • 键盘打字与英语学习的完美融合:Qwerty Learner终极指南
  • 5大核心功能深度解析:如何用PacketSender成为网络调试专家
  • 详解 Django DRF 架构基石:Serializer 深度剖析与高级嵌套/校验技巧
  • 视频编码识别与处理:从原理到工具,快速解决播放兼容问题
  • 从双曲几何到AdS时空:Weil-Petersson度量与重正化面积的深刻联系
  • 终极指南:5分钟快速上手ExtractorSharp游戏资源编辑器

日新闻

  • 单节点跑业务稳如泰山 扩容高可用集群反而频繁卡死 复盘完整连接交互揪出深层根因
  • Boss直聘批量投递工具:5倍效率提升的求职价值重构指南
  • 3分钟解锁VLC点击暂停插件:让视频控制变得如此简单!

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号