将一个文件夹的pdf都去掉第一页后生成在另一个文件夹

article/2024/5/21 21:34:45

目录

一.前言

二.环境配置

三.完整代码


一.前言

在日常的工作和学习中,我们经常需要处理大量的PDF文件。有时候,我们可能希望将一个文件夹中的所有PDF文件进行一些特定的操作,例如去掉每个PDF文件的第一页。

为了解决这个问题,本项目旨在提供一个自动化的解决方案,可以批量处理一个文件夹中的PDF文件,并将处理后的文件生成到另一个目标文件夹中。

该项目采用了Python编程语言,并利用了一些强大的库来实现功能。其中,我们使用了pdf2image库将PDF文件转换为图片格式,然后再利用img2pdf库将图片重新转换为PDF文件。通过这种方式,我们可以轻松地对每个PDF文件进行操作并去除第一页。

同时,为了确保项目的灵活性和易用性,我们为用户提供了可配置的参数,包括输入文件夹路径、输出文件夹路径等,以便根据实际需求进行自定义设置。

通过本项目,您将能够快速、高效地处理一个文件夹中的PDF文件,去掉每个文件的第一页,并生成到指定的目标文件夹中。这将极大地提升您的工作效率和操作便利性。

请尽情享受本项目带来的便利,希望它能对您的工作和学习有所帮助!

二.环境配置

安装好这个:

Release Release 24.02.0-0 · oschwartz10612/poppler-windows · GitHub

三.完整代码

import os
import glob
from pdf2image import convert_from_path
from PIL import Image
import img2pdfdef remove_first_page(input_folder, output_folder):# 获取目录中的所有PDF文件pdf_files = glob.glob(os.path.join(input_folder, '*.pdf'))for pdf_file in pdf_files:# 将PDF文件转换为图片images = convert_from_path(pdf_file)# 删除第一页图片images = images[1:]# 创建输出文件夹路径及新PDF文件名output_file = os.path.join(output_folder, os.path.basename(pdf_file))# 创建临时文件夹保存图片temp_folder = './temp'os.makedirs(temp_folder, exist_ok=True)# 保存图片到临时文件夹for i, image in enumerate(images):image.save(os.path.join(temp_folder, f'{i}.jpg'), 'JPEG')# 将图片转换回PDF并保存with open(output_file, 'wb') as f:f.write(img2pdf.convert([os.path.join(temp_folder, page) for page in os.listdir(temp_folder)]))# 删除临时文件夹及其中的图片for file in os.listdir(temp_folder):os.remove(os.path.join(temp_folder, file))os.rmdir(temp_folder)
input_dir = 'input'
output_dir = 'output'remove_first_page(input_dir, output_dir)


http://www.ngui.cc/article/show-2038935.html

相关文章

Serverless:程序员必须知道的云计算利器

作为一名程序员,你是否厌倦了管理服务器和基础设施的繁琐任务?Serverless 架构横空出世,解放你 khỏi这些负担,让你专注于编写代码。 什么是 Serverless? Serverless 是一种云计算模型,它允许你编写和部署…

计算机网络——GBN协议实现

实验目的 编程模拟实现GBN可靠传输软件 实验内容 C 程序模拟实现Go-Back-N可靠数据传输,需要编写一个发送端程序和一个测试端程序来模拟传输过程 具体流程 1. 编写发送端程序,调用库实现socket连接,然后主要实现滑动窗口,接收…

js 过滤 json 数据

js 过滤 json 数据 一、一维数组过滤1、filter2、map 二、复杂数组过滤三、树形数据过滤四、过滤附件数组 — filter、map、findIndex 一、一维数组过滤 1、filter let arr [{id: 1,name: "张三",age: 18},{id: 2,name: "李四",} ] arr arr.filter(ite…

Lasso多变量时序预测 基于Lasso多变量时序预测 (多输入单输出)

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 Lasso多变量时序预测 基于Lasso多变量时序预测 (多输入单输出) 订阅专栏只能获取一份代码 部分源码 %------

初学python记录:力扣39. 组合总和

题目: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限…

three.js第一章(把three.js的官方文档下载到本地)

目录 打开three.js官网下载three.js打开本地three.js 打开three.js官网 three.js官网 下载three.js 1.进入gethub 点击版本号,进入gethub 2.下载three.js 点击下载 下载完之后,解压缩包, 进入文件,不要忘记 下载node_m…

探讨广播电视工程中无功补偿与谐波治理的办法

随着我国经济社会和科学技术的不断发展,新时期人们对于高品质生活的追求也在逐渐提高,特别是在文化追求方面,人们的需求日益多样,当前广播电视台发展过程中,由于相关的设备规模和数量不断增加,电视台工程的…

基于SpringBoot+Vue的物业管理系统 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库:Mysql5.7/8.0 数据表:28张 开发语言:Java(jdk1.8) 开发工具:idea 前端技术:vue 后端技术:SpringBoot 功能简介 项目获取关键字:物业…

DRF ModelSerializer序列化类

ModelSerializer序列化类 【0】准备 模型表创建 from django.db import modelsclass Book(models.Model):name models.CharField(max_length64, verbose_name书名)price models.DecimalField(max_digits6, decimal_places2, verbose_name价格)publish models.ForeignKey(…

(2024,时控交叉注意力(T-GATE),缓存和复用交叉注意力图)交叉注意力使文本到图像扩散模型的推理变得麻烦

Cross-Attention Makes Inference Cumbersome in Text-to-Image Diffusion Models 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 4. 交叉注意力的时间分析 4.1. 交叉注意力图…