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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Python中的PyPDF2模块来提取PDF文件中的图片。首先需要安装PyPDF2模块,可以使用以下命令进行安装: ``` pip install PyPDF2 ``` 接下来,可以使用以下代码来批量提取PDF文件中的图片: ```python import PyPDF2 import os # 定义PDF文件夹路径 pdf_folder = r'path/to/pdf/folder' # 定义图片保存路径 image_folder = r'path/to/image/folder' # 遍历PDF文件夹中的所有文件 for filename in os.listdir(pdf_folder): if filename.endswith('.pdf'): # 打开PDF文件 pdf_file = open(os.path.join(pdf_folder, filename), 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) # 遍历PDF文件中的所有页面 for page_num in range(pdf_reader.getNumPages()): page = pdf_reader.getPage(page_num) # 遍历页面中的所有对象 for obj in page['/Resources']['/XObject'].values(): if obj['/Subtype'] == '/Image': # 提取图片数据 image_data = obj.getData() # 保存图片 image_filename = os.path.splitext(filename)[0] + '_page' + str(page_num+1) + '_image' + str(obj['/Name'][1:]) + '.jpg' image_path = os.path.join(image_folder, image_filename) with open(image_path, 'wb') as image_file: image_file.write(image_data) # 关闭PDF文件 pdf_file.close() ``` 以上代码将遍历PDF文件夹中的所有PDF文件,并提取每个文件中所有页面中的所有图片,并将图片保存到指定的图片文件夹中。图片文件名将以PDF文件名、页面号和图片编号作为前缀,例如:`example_page1_image1.jpg`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值