
在日常文档处理工作中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 操作如页面合并、文本提取等构建更复杂的文档自动化方案。