Python操作PDF附件添加查看与管理指南
在日常文档处理工作中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.Paperclipannotation.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.Attachmentsif 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 操作如页面合并、文本提取等构建更复杂的文档自动化方案。

相关新闻

IMX6ULL Qt 项目(控制led灯和蜂鸣器)全流程

IMX6ULL Qt 项目(控制led灯和蜂鸣器)全流程

一、网络搭建(我是连接网线的) 打开虚拟机设置,采用双适配器(一个选用桥接,一个选用NAT): 然后主机就打开控制面板的网络连接(我们需要的就是以太网2下面的这个NXUSB2.0&#xff09…

2026/6/26 22:53:43阅读更多 →
工作的目的的庖丁解牛

工作的目的的庖丁解牛

它的本质是:**工作不是“出卖时间”,而是 “将个人算力(技能/精力)封装成服务,通过市场接口交付,以换取生存资源和发展资本”的商业行为。 核心矛盾:社会叙事常将工作道德化(勤劳光荣…

2026/6/26 22:48:42阅读更多 →
白宫施压 Meta 提交 AI 模型评估,OpenAI 等已同意,Meta 正敲定细节

白宫施压 Meta 提交 AI 模型评估,OpenAI 等已同意,Meta 正敲定细节

白宫向 Meta 施压提交 AI 模型评估据《纽约时报》报道,白宫官员正在对 Meta 施加压力,要求其提交 AI 模型以供评估。而在此之前,OpenAI、Anthropic、谷歌、微软和 xAI 已经同意提交模型进行评估。Meta 表态正敲定协议细节Meta 发言人弗朗西斯…

2026/6/26 22:48:42阅读更多 →
企业级Pig系统安全加固实战:XSS立体防御与端到端数据加密

企业级Pig系统安全加固实战:XSS立体防御与端到端数据加密

1. 项目概述:为什么Pig系统的安全防护值得你投入精力?如果你正在负责一个基于Pig框架(这里指代一个常见的、用于快速构建后台管理系统的开源脚手架,而非Apache Pig大数据处理平台)开发的企业级应用,那么“安…

2026/6/27 0:09:04阅读更多 →
自动化工作流安全:从权限模型到供应链污染的纵深防御实践

自动化工作流安全:从权限模型到供应链污染的纵深防御实践

1. 项目概述:当自动化成为攻击者的“高速公路”最近在复盘一些内部安全审计案例时,一个代号为“Ni8mare”的自动化工作流平台漏洞利用链引起了我的注意。这并非一个单一的CVE编号,而是一系列由配置缺陷、逻辑漏洞和供应链风险交织而成的攻击路…

2026/6/27 0:09:04阅读更多 →
终极指南:5分钟掌握SketchUp STL插件,实现3D模型无缝转换

终极指南:5分钟掌握SketchUp STL插件,实现3D模型无缝转换

终极指南:5分钟掌握SketchUp STL插件,实现3D模型无缝转换 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl …

2026/6/27 0:09:04阅读更多 →
Linux 内核网络栈调优:从 TCP 拥塞控制到连接池瓶颈的深度优化

Linux 内核网络栈调优:从 TCP 拥塞控制到连接池瓶颈的深度优化

Linux 内核网络栈调优:从 TCP 拥塞控制到连接池瓶颈的深度优化一、高并发下的网络栈瓶颈:当带宽充足但吞吐量上不去 生产环境中经常遇到这样的场景:服务器带宽 10Gbps,CPU 和内存充裕,但实际吞吐量只有 2-3Gbps。应用层…

2026/6/27 0:09:04阅读更多 →
Tiled地图编辑器:解决游戏开发中地图制作难题的专业解决方案

Tiled地图编辑器:解决游戏开发中地图制作难题的专业解决方案

Tiled地图编辑器:解决游戏开发中地图制作难题的专业解决方案 【免费下载链接】tiled Flexible level editor 项目地址: https://gitcode.com/gh_mirrors/ti/tiled 你是否曾为游戏开发中的地图制作而烦恼?面对复杂的关卡设计、繁琐的资源管理和不兼…

2026/6/27 0:09:04阅读更多 →
Vue KeepAlive 原理深度解析:从使用到底层实现

Vue KeepAlive 原理深度解析:从使用到底层实现

目录 一、什么是 KeepAlive? 二、KeepAlive 的核心数据结构 三、KeepAlive 的工作原理(三步走) 第 1 步:挂载时(首次渲染)——“存” 第 2 步:切换离开时(失活)——“…

2026/6/27 0:04:03阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/26 4:15:25阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →