Python批处理PDF文件,PDF附件轻松批量提取

news/2024/10/21 23:00:46/

PDF附件是指在PDF文档中嵌入的其他文件,如图像、表格、音频、视频或其他文档。这些附件可以与PDF文档一起存储、传输和共享,为文档提供了更丰富的内容和更多的功能。通过添加附件,我们可以将相关文件和信息捆绑在一起,使其更易于管理和共享。此外,PDF附件还可以用于在文档中引用外部资源,提供更全面的参考资料和支持材料。然而,处理大量的PDF附件可能会很繁琐且费时费力。通过利用Python程序,我们可以轻松地批量处理这些附件,极大地提高工作效率。本文将介绍如何通过Python轻松批量提取并保存PDF附件插入附件到PDF文档中以及删除PDF文件中的附件

文章目录

    • 使用Python批量提取PDF附件
    • 使用Python轻松插入附件到PDF
    • 使用Python批量删除PDF附件

本文所介绍的方法需要用到Spire.PDF for Python,可从官网下载或通过PyPI安装:

pip install Spire.PDF

使用Python批量提取PDF附件

提取PDF文档中的附件主要用到的是PdfDocument.Attachments属性和 PdfAttachment.Data.Save() 方法。PdfDocument.Attachments属性可以获取一个PDF文档中的所有附件并返回一个附件集合,而PdfAttachment.Data.Save()方法则可以将指定附件保存到指定文件夹。详细操作步骤如下:

  1. 指定输入文件夹和输出文件夹的路径。
  2. 获取输入文件夹中以".pdf"结尾的PDF文件列表。
pdfFiles = [f for f in os.listdir(inputFolder) if f.endswith(".pdf")]
  1. 遍历每个PDF文件。
  2. 创建PdfDocument类的对象,并使用PdfDocument.LoadFromFile()再入PDF文件。
document = PdfDocument()
document.LoadFromFile(filePath)
  1. 获取PDF文件的附件列表。
attachments = document.Attachments
  1. 判断附件列表是否为空,如果有附件,则构建储存附件的文件夹。
  2. 遍历附件列表,获取附件对象,并将附件保存到指定路径。
attachment = attachments.get_Item(i)
attachmentPath = os.path.join(outputFolderPath, attachment.FileName)
attachment.Data.Save(attachmentPath)
  1. 关闭PDF文件。

完整代码示例:

import os
from spire.pdf import *
from spire.pdf.common import *# 指定输入文件夹和输出文件夹的路径
inputFolder = "文档/PDF"
outputFolder = "文档/附件"# 获取输入文件夹中以".pdf"结尾的PDF文件列表
pdfFiles = [f for f in os.listdir(inputFolder) if f.endswith(".pdf")]# 遍历每个PDF文件
for fileName in pdfFiles:# 构建PDF文件的完整路径filePath = os.path.join(inputFolder, fileName)# 创建PdfDocument对象并加载PDF文件document = PdfDocument()document.LoadFromFile(filePath)# 获取PDF文件的附件列表attachments = document.Attachments# 如果附件存在if attachments:# 获取PDF文件名(不包含扩展名)fileNameWithoutExt = os.path.splitext(fileName)[0]# 构建输出文件夹路径outputFolderPath = os.path.join(outputFolder, fileNameWithoutExt)# 创建输出文件夹os.makedirs(outputFolderPath, exist_ok=True)# 遍历附件列表for i in range(attachments.Count):# 获取附件对象attachment = attachments.get_Item(i)# 构建附件保存路径attachmentPath = os.path.join(outputFolderPath, attachment.FileName)# 保存附件到指定路径attachment.Data.Save(attachmentPath)# 关闭PDF文档document.Close()

用于提取附件的PDF文件:
Python提取PDF附件

提取结果:
Python提取PDF附件

使用Python轻松插入附件到PDF

通过创建PdfAttachment类的实例即可创建PDF附件,并对附件相关信息进行设置,如描述和修改日期。在创建好附件后,使用PdfDocument.Attachments.Add()方法即可将附件添加到PDF文件中。附件还可以与PDF注释结合,实现从页面上跳转到指定附件。一下步骤是添加附件的简单示例:

  1. 创建PdfDocument类的对象并再入PDF文档。
document = PdfDocument()
document.LoadFromFile(pdfPath)
  1. 创建PdfAttachment类的对象,并设置附件描述和修改日期。
attachment = PdfAttachment(attachmentPath)
attachment.Description = "参会人员名单"
attachment.ModificationDate = DateTime.get_Now()
  1. 将附件添加到PDF文件中。
document.Attachments.Add(attachment)
  1. 保存并关闭PDF文件。
document.SaveToFile("output/添加附件.pdf")
document.Close()

完整代码示例:

from spire.pdf import *
from spire.pdf.common import *# 定义PDF文件路径和附件路径
pdfPath = "文档/示例5.pdf"
attachmentPath = "示例/名单.txt"# 创建PdfDocument对象并加载PDF文件
document = PdfDocument()
document.LoadFromFile(pdfPath)# 创建PdfAttachment对象
attachment = PdfAttachment(attachmentPath)# 设置附件的描述信息和修改日期
attachment.Description = "参会人员名单"
attachment.ModificationDate = DateTime.get_Now()# 将附件添加到PDF文档中
document.Attachments.Add(attachment)# 保存PDF文档到指定路径
document.SaveToFile("output/添加附件.pdf")# 关闭PDF文档
document.Close()

添加效果:
Python添加附件到PDF

使用Python批量删除PDF附件

删除PDF文件中的附件则比较简单,直接使用PdfDocument.Attachments属性获取一个PDF文件中的附件,然后再删除指定的附件或所有附件即可。一下是操作步骤:

  1. 创建PdfDocument类的对象并再入PDF文档。
document = PdfDocument()
document.LoadFromFile(pdfPath)
  1. 获取PDF文件中的附件集合。
document.Attachments
  1. 删除指定附件。
attachments.RemoveAt(0)
  1. 或删除所有附件。
attachments.Clear()
  1. 保存并关闭PDF文件。
document.SaveToFile("output/删除附件.pdf")
document.Close()

完整代码示例:

from spire.pdf import *
from spire.pdf.common import *# 定义PDF文件路径
pdfPath = "文档/示例5.pdf"# 创建PdfDocument对象并加载PDF文件
document = PdfDocument()
document.LoadFromFile(pdfPath)# 获取PDF文件的附件集合
attachments = document.Attachments# 删除指定附件
attachments.RemoveAt(0)# 删除所有附件
attachments.Clear()# 保存并关闭PDF文件
document.SaveToFile("output/删除附件.pdf")
document.Close()

以上是关于如何利用Python在PDF文件中添加、提取及删除附件的方法介绍。Spire.PDF for Python还支持许多其他功能,请前往Spire.PDF for Python教程了解更多。


http://www.ppmy.cn/news/1259784.html

相关文章

二:C语言-数据类型和变量

二:数据类型和变量 1.数据类型的介绍: ​ 内置数据类型(C语言本身具有的):字符 - char;整型 - int;浮点型 - float;布尔类型 - _Bool ​ 自定义数据类型(自己创建的类…

6.1810: Operating System Engineering 2023 <Lab3: page tables>

一、本节任务 实验环境: 二、要点 如何防止程序破坏内核或其他进程空间?隔离地址空间,进程只能读写自己的内存空间。 在保证隔离的同时,如何将多个地址空间复用到一个物理内存上?虚拟内存/页表。操作系统通过页表来为…

【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏7(附项目源码,完结)

参考原视频链接 【视频】:https://www.youtube.com/watch?v=MmW166cHj54&list=PLO-mt5Iu5TeZF8xMHqtT_DhAPKmjF6i3x 注意:本文为学习笔记记录,推荐支持原作者,去看原视频自己手敲代码理解更加深入,文章被CSDN设置付费了,找官方也解不开了 文章目录 参考原视频链接…

Linux常用指令详解

目录 前言: Linux的目录结构 Linux常用指令简介 whoami指令 ls指令 pwd指令 cd指令 tree指令 touch指令 mkdir指令 rmdir指令与rm指令 man指令 cp(copy)指令 mv(move)指令 cat指令 重定向及重定向的类型…

React 列表页实现

一、介绍 列表页是常用的功能,从后端获取列表数据,刷新到页面上。开发列表页需要考虑以下技术要点:1.如何翻页;2.如何进行内容搜索;3.如何缓存数据;4.何时进行页面刷新。 二、使用教程 1.redux actions.js export …

数据结构与算法之美学习笔记:32 | 字符串匹配基础(上):如何借助哈希算法实现高效字符串匹配?

标题 前言BF 算法RK 算法解答开篇 & 内容小结 前言 本节课程思维导图: 从今天开始,我们来学习字符串匹配算法。我们用的最多的比如 Java 中的 indexOf(),Python 中的 find() 函数等,它们底层就是依赖接下来要讲的字符串匹配算…

Ubuntu22.04通过Maas和Juju部署openstack charm

目录 官方文档材料准备软件硬件 模板机和虚拟网络安装MAAS官方文档MAAS节点配置安装MAAS浏览器登录MAAS进行配置 激活DHCP 官方文档 https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/2023.1/ 这是一个通过Maas面板即可部署openstack的方式&#xff0…

windows10系统下替换、修改jar中的文件并重新打包成jar文件然后运行

目录 1、jar文件简述2、问题来源3、操作步骤3.1 解压jar包3.2 替换或者更改操作3.3 重新打成jar包3.4 确认是否修改成功3.5 运行程序 附录:常见命令参数 1、jar文件简述 JAR 文件就是 Java Archive ( Java 档案文件),它是 Java 的…