当前位置: 首页 > news >正文

PDF操作——批量删除末页

一、说明

由于PDF末页为空白页或者是免责声明需要删除,涉及的文件比较多,因此写了一小段代码进行处理。

二、完整架构流程

这个代码的整体架构流程可以分为以下几个步骤:

  1. 导入所需的库:首先,代码导入了PyPDF2os两个库。PyPDF2是一个Python库,用于处理PDF文件,而os库提供了与操作系统交互的功能。
  2. 定义find_pdf函数:这个函数用于获取指定文件夹中所有的PDF文件路径。它通过遍历文件夹及其子文件夹,检查每个文件的扩展名,并返回所有PDF文件的路径列表。
  3. 定义delete函数:这个函数用于删除PDF文件的最后一页。它首先打开指定的PDF文件,然后创建一个PDF读取器对象来读取文件内容。接着,它获取文件的总页数,并创建一个新的PDF写入器对象。这个函数遍历除最后一页外的所有页面,将这些页面添加到写入器对象中。最后,它将写入器对象中的页面写入到新的PDF文件中,并关闭文件流。
  4. 主程序:在主程序部分,首先调用find_pdf函数获取指定文件夹中所有PDF文件的路径列表。然后,它遍历这个列表,对每个文件调用delete函数,以删除每个文件的最后一页。最后,它将处理后的文件保存到新的文件夹中。

  请注意,这段代码仅是以实现主要功能为主,并没有处理可能的异常情况,例如打开文件失败、读取文件失败、写入文件失败等。在实际使用中,还需要添加适当的错误处理代码来确保程序的健壮性。

三、完整代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2023-12-31 15:24
# @Author : Leuanghing Chen
# @Blog : https://blog.csdn.net/weixin_46153372?spm=1010.2135.3001.5421
# @File : pdf尾页删除.py
# @Software : PyCharmimport PyPDF2
import os# 获取文件夹中的pdf文件路径
def find_pdf(path):filename_list = []archives_path_list = []# 读入文件for root, dirs, files in os.walk(path):# 遍历文件时以pdf文件为依据,获取文件名filename_list和文件路径archives_path_listfor file in files:if file[-4:] == '.pdf' or file[-4:] == '.PDF':name = os.path.join(root, file).split("\\")[-1]filename_list.append(name.replace('.pdf', '').replace('.PDF', ''))archives_path_list.append(os.path.join(root, file))return archives_path_list# 删除末页(old_path为旧路径,new_path为新路径。新旧文件分为两个文件夹,主要用来对比,也可以改成覆盖原文件的方式)
def delete(old_path, new_path):# 打开要处理的PDF文件pdf_file = open(old_path, 'rb')# 创建一个PDF读取器对象pdf_reader = PyPDF2.PdfFileReader(pdf_file)# 获取PDF文件的总页数num_pages = pdf_reader.getNumPages()# 创建一个新的PDF写入器对象pdf_writer = PyPDF2.PdfFileWriter()# 将所有除了最后一页以外的页面添加到写入器对象中for page_num in range(num_pages - 1):page = pdf_reader.getPage(page_num)pdf_writer.addPage(page)# 将写入器对象中的页面写入到新的PDF文件中output_file = open(new_path, 'wb')pdf_writer.write(output_file)# 关闭文件流pdf_file.close()output_file.close()if __name__ == '__main__':path = find_pdf(r'C:\Users\LTCH\Desktop\新建文件夹 (2)')for i in range(len(path)):delete(path[i], path[i].replace('新建文件夹 (2)', '新建文件夹 (3)'))
http://www.lryc.cn/news/292860.html

相关文章:

  • Jasperreport 生成 PDF之省纸模式
  • IDEA反编译Jar包
  • MySQL 备份恢复
  • UbuntuServer22.04LTS在线安装MySQL8.x
  • GmSSL - GmSSL的编译、安装和命令行基本指令
  • 面试题:为什么MySQL不建议使用NULL作为列默认值?
  • ClickHouse基于数据分析常用函数
  • c语言编译和链接
  • C++ printf解释
  • paddle环境安装
  • kingbase配置SSL双向认证
  • Android Studio 使用小记2 Flutter提交SVN时需要忽略哪些文件
  • 搜索引擎评价指标及指标间的关系
  • armbian修改docker目录到硬盘
  • cip、ethernet/ip开源协议栈:开发源代码
  • 网络原理TCP/IP(2)
  • Echars3D 饼图开发
  • 【PaddleSpeech】语音合成-男声
  • AI-数学-高中-17-三角函数的定义
  • centOS/Linux系统安全加固方案手册
  • 编程实例分享,眼镜店电脑系统软件,配件验光管理顾客信息记录查询系统软件教程
  • 完整的 HTTP 请求所经历的步骤及分布式事务解决方案
  • SpringMVC请求和响应
  • AIGC实战——深度学习 (Deep Learning, DL)
  • Django_基本增删改查
  • 数仓治理-存储资源治理
  • Linux系统安全:安全技术 和 防火墙
  • 3dmatch-toolbox详细安装教程-Ubuntu14.04
  • Hadoop与Spark横向比较【大数据扫盲】
  • 软件工程知识梳理5-实现和测试