Python办公神器:教你如何快速分拆、删页、合并PDF文件
哈喽大家好,我是了不起,今天教你如何用Python快速分拆、删页、合并PDF文件

介绍
有时我们可能需要对PDF文件进行一些处理,例如分拆、删页、合并等。这些操作在一些专业的PDF软件中可能比较容易实现,但是如果我们想要用Python来自动化或批量处理这些操作呢?有没有什么简单而强大的Python库可以帮助我们呢?
答案是肯定的。在Python中,有一个叫做PyPDF2的库,它可以让我们用简单的代码来处理PDF文件。
在这篇教程中,我们将学习如何使用PyPDF2库来快速分拆、删页、合并PDF文件。我们将通过一些实际的例子来演示这些操作,并介绍一些常用的API和参数。在开始之前,我们需要先安装PyPDF2库。

安装
要安装PyPDF2库,我们可以使用pip命令:
pip install PyPDF2
安装完成后,我们就可以在Python中导入PyPDF2库了:
import PyPDF2
分拆
分拆(Split)是指将一个PDF文件分成多个小的PDF文件,每个小文件只包含原文件中的一部分页面。这样做的目的可能是为了方便管理或传输这些文件,或者只需要其中的某些页面。
要实现分拆操作,我们需要使用PyPDF2.PdfReader类来读取原始的PDF文件,并使用PyPDF2.PdfWriter类来创建新的PDF文件,并将需要的页面写入其中。下面是一个简单的例子:
# 读取原始的PDF文件
pdf_reader = PyPDF2.PdfReader("original.pdf")# 获取原始文件中的总页数
total_pages = len(pdf_reader.pages)# 创建一个空列表,用于存放新创建的PDF文件名
new_files = []# 循环遍历每一页
for i in range(total_pages):# 创建一个新的PdfFileWriter对象pdf_writer = PyPDF2.PdfWriter()# 获取当前页对象page = pdf_reader.pages[i]# 将当前页对象添加到PdfFileWriter对象中pdf_writer.add_page(page)# 创建一个新的PDF文件名,格式为"original_页码.pdf"new_file = f"original_{i+1}.pdf"# 将新的PDF文件名添加到列表中new_files.append(new_file)# 打开一个新的PDF文件,以二进制写入模式with open(new_file, "wb") as f:# 将PdfFileWriter对象中的内容写入到新的PDF文件中pdf_writer.write(f)# 打印出新创建的PDF文件名
print(new_files)
运行上面的代码,我们可以得到如下的输出:
['original_1.pdf', 'original_2.pdf', 'original_3.pdf', 'original_4.pdf', 'original_5.pdf']
这说明我们已经成功地将原始的PDF文件分拆成了5个小的PDF文件,每个文件只包含原始文件中的一 页。我们可以打开这些文件,查看它们的内容是否正确。

删页
删页(Delete)是指将一个PDF文件中的某些页面删除,只保留需要的页面。这样做的目的可能是为了减少文件的大小或去除不相关的内容。
要实现删页操作,我们也需要使用PyPDF2.PdfReader类来读取原始的PDF文件,并使用PyPDF2.PdfWriter类来创建新的PDF文件,并将需要保留的页面写入其中。不同的是,我们需要指定要删除的页面的索引或范围,并在循环遍历每一页时跳过这些页面。下面是一个简单的例子:
# 读取原始的PDF文件
pdf_reader = PyPDF2.PdfReader("original.pdf")# 获取原始文件中的总页数
total_pages = len(pdf_reader.pages)# 指定要删除的页面索引或范围,从0开始计数
delete_pages = [0, 2, 4]# 创建一个新的PdfFileWriter对象
pdf_writer = PyPDF2.PdfWriter()# 循环遍历每一页
for i in range(total_pages):# 如果当前页索引不在要删除的页面列表中,则保留该页if i not in delete_pages:# 获取当前页对象page = pdf_reader.pages[i]# 将当前页对象添加到PdfFileWriter对象中pdf_writer.add_page(page)# 创建一个新的PDF文件名,格式为"original_deleted.pdf"
new_file = "original_deleted.pdf"# 打开一个新的PDF文件,以二进制写入模式
with open(new_file, "wb") as f:# 将PdfFileWriter对象中的内容写入到新的PDF文件中pdf_writer.write(f)# 打印出新创建的PDF文件名
print(new_file)
运行上面的代码,我们可以得到如下的输出:
original_deleted.pdf
这说明我们已经成功地将原始的PDF文件中的第1、3、5页删除,只保留了第2、4页。我们可以打开新创建的PDF文件,查看它们的内容是否正确。
合并
合并(Merge)是指将多个PDF文件合并成一个大的PDF文件,包含所有原始文件中的所有页面。这样做的目的可能是为了整合或汇总相关的文档,或者方便查阅或打印。
要实现合并操作,我们需要使用PyPDF2.PdfMerger类来创建一个合并器对象,并使用它来添加和合并多个PDF文件。下面是一个简单的例子:
# 创建一个PdfMerger对象
pdf_merger = PyPDF2.PdfMerger()# 创建一个空列表,用于存放要合并的PDF文件名
files_to_merge = []# 循环遍历要合并的5个小文件
for i in range(5):# 获取当前小文件名,格式为"original_页码.pdf"file = f"original_{i+1}.pdf"# 将当前小文件名添加到列表中files_to_merge.append(file)# 用PdfFileReader对象打开当前小文件pdf_reader = PyPDF2.PdfReader(file)# 用PdfFileMerger对象添加当前小文件,append方法可以将所有页面添加到合并器中pdf_merger.append(pdf_reader)# 创建一个新的PDF文件名,格式为"original_merged.pdf"
new_file = "original_merged.pdf"# 打开一个新的PDF文件,以二进制写入模式
with open(new_file, "wb") as f:# 将PdfFileMerger对象中的内容写入到新的PDF文件中pdf_merger.write(f)# 打印出新创建的PDF文件名
print(new_file)
运行上面的代码,我们可以得到如下的输出:
original_merged.pdf
这说明我们已经成功地将5个小的PDF文件合并成了一个大的PDF文件,包含了原始文件中的所有页面。我们可以打开新创建的PDF文件,查看它们的内容是否正确。
总结
在这篇教程中,我们学习了如何使用PyPDF2库来快速分拆、删页、合并PDF文件。我们通过一些实际的例子来演示了这些操作,并介绍了一些常用的API和参数。PyPDF2库还有很多其他的功能和特性,例如旋转、裁剪、加密、解密、提取文本等,感兴趣的读者可以自行探索和尝试。希望这篇教程对你有所帮助,让你成为Python自动化办公高手!
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费】
点击免费领取《CSDN大礼包》:Python入门到进阶资料 & 实战源码 & 兼职接单方法 安全链接免费领取

相关文章:
Python办公神器:教你如何快速分拆、删页、合并PDF文件
哈喽大家好,我是了不起,今天教你如何用Python快速分拆、删页、合并PDF文件 介绍 有时我们可能需要对PDF文件进行一些处理,例如分拆、删页、合并等。这些操作在一些专业的PDF软件中可能比较容易实现,但是如果我们想要用Python来自…...
Android aidl的简单使用
一.服务端 1.创建aidl文件,然后记得build下生成java文件 package com.example.aidlservice31;// Declare any non-default types here with import statementsinterface IMyAidlServer {// 接收一个字符串参数void setData(String value);// 返回一个字符串String …...
双十一备战与复盘
如何组织备战 重要节点 从大促启动会开始后我就开始计划我们本次备战的整体节奏。 挑战在哪 以上内容介绍了CDP平台有多么重要,那么画像系统备战的核心挑战在“如何保障在大流量高并发情况下系统稳定提供高性能服务”,主要表现在:稳定性、…...
ONNX实践系列-修改yolov5-seg的proto分支输出shape
一、目标 本文主要介绍要将原始yolov5分割的输出掩膜从[b,c,h,.w]修改为[b, h, w, c] 原来的: 目标的: 代码如下: Descripttion: version: @Company: WT-XM Author: yang jinyi Date: 2023-09-08 11:26:28 LastEditors: yang jinyi LastEditTime: 2023-09-08 11:48:01 …...
VMware与Linux安装
VM与Linux安装 1、安装VMware 这里安装Vm主要是为了安装Linux系统,除了相对云服务器,比较大众化的操作,当然更多的是熟悉Linux操作 1、Windows安装 (1) 下载链接,目前版本上下载VM15的版本即可https://www.vmware.com/p…...
服务器连接github
https://zhuanlan.zhihu.com/p/543490354 比着这个一步步做就行。 https://blog.l0v0.com/posts/94ffdbdf.html 上传文件可以看这个 注意: 密钥ssh-keygen设置好之后,以后就不用每次输入账号密码才能访问了。 otherwise,每次要输入账号密码。…...
自动驾驶中的LFM(LED 闪烁缓解)问题
自动驾驶中的LFM Reference: 自动驾驶系统如何跨越LFM这道坎? 从路灯、交通灯,到车载照明,低功耗、长寿命、高可靠的 LED 正在快速取代传统照明方式。但 LED 在道路上的普遍使用,却带来“LED闪烁”现象。“LED闪烁”是由 LED 驱…...
ArkTS-页面和自定义组件生命周期
页面生命周期:被Entry装饰的组件生命周期 onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景onPageHide:页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景onBackPress:当用户…...
ELK: logstash gork filter 多个模式(pattern)匹配规则语法和多行日志匹配设置
项目里用logstash分析日志,由于有多种模式(pattern)需要匹配,网上搜了很多示例,发现这些都是老的写法,都会报错,后来查阅了官方文档,才发现,新版本只支持新语法。 错误的…...
Ubuntu20.04上编译安装TVM
本文主要讲述如何在ubuntu20.04平台上编译TVM代码并在python中import tvm成功。 源代码下载: git clone --recursive https://github.com/apache/tvm tvm 平台环境升级: 1) sudo apt-get update 2) sudo apt-get install -y pyth…...
伦敦金现图形态分析(深度好文)
对价格行为交易者来说,伦敦金价走势图表中的一些特殊形态,能够带来比较靠谱的交易信号。然而交易并不只和形态有关,也和我们能够从图表形态中阅读到什么,以及如何理解其他交易者对价格波动的推动有关。 在对伦敦金走势图的技术形态…...
慕尼黑电子展采访全程 | Samtec管理层对话电子发烧友:虎家卓越服务
【摘要/前言】 今年的慕尼黑上海电子展上,Samtec大放异彩,特装展台一亮相就获得了大家的广泛关注,展台观众络绎不绝。 作为深耕连接器行业数十年的知名厂商以及Electronica的常客,Samtec毫无疑问地获得了大量媒体朋友的关注和报…...
APP外包项目维护方案
APP项目维护是确保应用程序持续运行、安全性和性能不断优化的关键活动。以下是一个综合的APP项目维护方案,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.定期性能监控和优化: 使用性能…...
leetcode面试经典150题——32 串联所有单词的子串(中等+困难)
题目: 串联所有单词的子串(1中等) 描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串&…...
oracle关联更新
业务场景中需要对特定数据进行关联更新,记录一下关联更新语法: MERGE INTO fine_record_execute targ USING (SELECT "id","tname"FROM fine_record_executeWHERE "username" LIKE %目标人物%AND "time">20…...
SWT技巧
实现控件的刷新 问题可以简化如下,点击上方按钮,使下方按钮移动,但要求在监听事件里新建按钮对象,而不是使用原来的按钮(原来的按钮被移除了)。 解决代码如下: public class TestUI {protecte…...
3.数据结构
3.1 数据结构分类 常见的数据结构包括数组、链表、栈、队列、哈希表、树、堆、图,它们可以从“逻辑结构”和“物理结构”两个维度进行分类。 3.1.1逻辑结构:线性与非线性 逻辑结构揭示了数据元素之间的逻辑关系。在数组和链表中,数据按照…...
一篇文章完成Hbase入门
文章目录 一、简介1、数据模型结构2、物理存储结构3、数据模型4、基本架构 二、安装1、下载解压安装包2、修改配置文件3、启动服务(单机、集群)4、配置高可用(HA) 三、命令行操作1、建表2、新增/更新数据3、查看表数据4、删除数据5、修改默认保存的数据版本 四、架构1、RegionS…...
使用PotPlayer播放器查看软解和硬解4K高清视频时的CPU及GPU占用情况
目录 1、问题说明 2、PotPlayer播放器介绍 3、视频的软解与硬解 4、使用PotPlayer查看4K高清视频软解和硬解时的CPU占用情况 4.1、使用软解时CPU和GPU占用情况 4.2、使用硬解时CPU和GPU占用情况 5、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅…...
怎么做excel表格的二维码?文件快速做二维码的教程
Excel表格怎么做成二维码来扫码插看呢?Excel是工作中常用的一种文件格式,想要将表格内容分享给其他人查看,那么将表格生成二维码的方法会更加的方便快捷,其他人只需要扫描二维码就可以查看或者下载文件。表格excel二维码可以通过文…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
