Python一键删除PDF任意页:输入页码秒出干净文件——再也不用在线裁剪排队

PDF删页, 零依赖脚本, 命令行秒用, 小白神器, 瑞士军刀

故事开场:一把瑞士军刀救了你

周一早高峰,老板发来 200 页 PDF:
“把第 18、25、37 页删掉,10 分钟后开会!”
你打开浏览器找在线工具——排队 20 人,上传 80 MB,还提示“会员专享”。
这时,你从 U 盘掏出“小白瑞士军刀”——main.py
双击运行,按提示输入:

What is the file that you would like to modify?
>>> report.pdf
How many pages do you need to delete?
>>> 3
Enter the page numbers…
>>> 18 25 37

30 秒后,output.pdf 躺在桌面,只剩 197 页。
老板惊呼:“效率真高!”
痛点解决:再也不用在线排队、上传下载,本地 30 秒搞定。


完整代码(≤1000字符,直接展示)

from PyPDF2 import PdfFileWriter, PdfFileReaderprint("请输入要处理的 PDF 路径:")
file = input()
pdf_in = PdfFileReader(file)print("要删除几页?")
n = int(input())
pages_to_delete = []
print("请输入页码(每行一个):")
for _ in range(n):pages_to_delete.append(int(input()) - 1)  # 页码从 0 开始pdf_out = PdfFileWriter()
for i in range(pdf_in.getNumPages()):if i not in pages_to_delete:pdf_out.addPage(pdf_in.getPage(i))with open('output.pdf', 'wb') as f:pdf_out.write(f)
print("完成!已生成 output.pdf")

代码解析

功能块 1:读取 PDF

PdfFileReader 把整本 PDF 加载到内存,后续操作零延迟。

pdf_in = PdfFileReader(file)

功能块 2:交互收集页码

input() 逐行收集用户想删的页码,减 1 转成 0 基索引,小白不会输错。

pages_to_delete.append(int(input()) - 1)

功能块 3:循环保留页面

遍历所有页码,不在删除列表就加入新 PDF,顺序不变。

for i in range(pdf_in.getNumPages()):if i not in pages_to_delete:pdf_out.addPage(pdf_in.getPage(i))

如果还想更厉害

扩展点子 1:命令行参数

-f report.pdf -p 18 25 37 -o cleaned.pdf,一行搞定。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--file', required=True)
parser.add_argument('-p', '--pages', nargs='+', type=int)
parser.add_argument('-o', '--output', default='output.pdf')
args = parser.parse_args()

扩展点子 2:图形界面

tkinter 拖文件选页码,按钮一键删除。

import tkinter.filedialog as fd
file = fd.askopenfilename(filetypes=[("PDF", "*.pdf")])
# 复用上面页码列表逻辑

总结

main.py 这把 20 行瑞士军刀,把“上传→排队→下载”三步压缩成“输入页码+回车”。
你无需安装任何大型软件,就能把 PDF 任意页秒删,顺序不乱。
再加两行参数或 GUI,它就从脚本升级成批量神器。
下次再遇“删两页”需求,直接跑脚本,30 秒收工!

源码获取

完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库] https://gitcode.com/laonong-1024/python-automation-scripts
📥 [备用下载] https://pan.quark.cn/s/654cf649e5a6 提取码:f5VG

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919349.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919349.shtml
英文地址,请注明出处:http://en.pswp.cn/news/919349.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RH134 运行容器知识点

1. 相比较虚拟机,容器有哪些技术优势?答:轻量级:容器共享宿主操作系统的内核,比虚拟机更轻量级,启动速度更快,资源占用更少。高效性:容器可以快速部署和扩展,适合于微服务…

亚矩阵云手机智能定位:助力Snapchat矩阵账号的本地化内容运营穿透技术

——构建跨地理围栏的智能社交营销网络**​​一、技术架构&#xff1a;动态定位引擎与多维度穿透体系​​动态定位引擎​​多源信号融合定位​&#xff1a;集成GPS/基站/WiFi三角定位技术&#xff0c;通过亚矩阵云手机底层驱动注入真实坐标数据&#xff08;误差<5米&#xf…

数据处理和统计分析 —— Pandas 基础(附数据集)

目录 一、概述 &#xff08;一&#xff09;series 1、组成 2、创建方式 3、Series常用属性 &#xff08;二&#xff09;DataFrame 1、组成&#xff1a; 2、构建方式 &#xff08;三&#xff09;数据导入和导出 二、加载数据集 加载部分数据 loc / iloc 三、分组和聚合计算 需求…

github 如何在 readme 显示Star History

在GitHub的README文件中显示Star History&#xff08;星标历史&#xff09;图表&#xff0c;可以通过以下几种方式实现&#xff1a; 使用Star History服务 你可以使用Star History服务来生成并嵌入星标历史图表 。具体步骤如下&#xff1a; 访问 Star History 网站: https:/…

安全防范方案

一、基于地理位置的访问控制&#xff08;核心方案&#xff09; 原理&#xff1a;通过内置GeoIP数据库或第三方IP库识别访问源国家/地区&#xff0c;动态拦截非目标区域IP。 配置步骤&#xff1a; 启用GeoIP模块 登录管理控制台 → 安全策略 → 地理位置策略 → 加载MaxMind Ge…

Python爬虫实战:研究optimesh库,构建Github网格数据采集系统

1. 引言 1.1 研究背景与意义 在计算机辅助设计(CAD)、有限元分析(FEA)、计算流体力学(CFD)等领域,网格作为离散化连续空间的基础载体,其质量直接影响数值模拟的精度与效率。高质量的网格应具备单元形状规则、分布均匀、边界贴合度高等特征,而低质量网格可能导致计算…

利用Qwen大模型进行c++11并发库的学习,与时俱进!!!!

文章目录 1、学习新的东西可以借助ai和官方文档 1.1 会问问题 异步编程教程 1. std::future 2. std::shared_future 3、std::promise 4、4. std::packaged_task 5. std::async 6. std::future_status 和等待函数 综合代码 总结 1、学习新的东西可以借助ai和官方文档 因为别人写…

曲面/线 拟合gnuplot

1. 下载gnuplot windows 版&#xff0c;安装&#xff0c;&#xff08;别的绿色的可能下载即用&#xff0c;推荐下面链接这款&#xff09; gnuplot - Browse Files at SourceForge.net 2. 准备数据&#xff0c;存成data.dat或者其它文件名称&#xff0c;放桌面 数据内容如下…

CentOS Linux 7 (Core)上部署Oracle 11g、19C RAC详细图文教程

一、部署参考链接&#xff1a; 墨天轮数据库社区 - 乐知乐享&#xff0c;同心共济 实战篇&#xff1a;一步步教你 Linux 7 安装 Oracle 11GR2 RAC 实战篇&#xff1a;Linux7 安装 Oracle 19C RAC 详细图文教程 Linux7 安装 Oracle 19C RAC 详细图文教程

WebSocket DevTools 开发调试工具完全指南 – 实时监控、消息拦截、性能分析一站式解决方案

概述 WebSocket DevTools 是一款专为 WebSocket 连接调试而设计的浏览器开发者工具扩展。它提供了实时监控、消息拦截、连接管理等功能&#xff0c;帮助开发者快速定位和解决 WebSocket 相关问题。 主要特性 &#x1f50d; 实时监控&#xff1a;实时显示 WebSocket 连接状态…

常见的光源频闪控制方式

一、光源频闪的优势消除运动模糊&#xff0c;提升成像质量 光源以极短脉冲&#xff08;微秒级&#xff09;与相机曝光严格同步&#xff0c;实现“瞬时冻结”高速运动物体。增强特征对比度&#xff0c;提高缺陷检出率 频闪模式下&#xff0c;LED可短时超负荷工作&#xff0c;峰值…

读From GPT-2 to gpt-oss: Analyzing the Architectural Advances(续)

序 本篇由来&#xff0c;在COC上我当面感谢了组委会和姜宁老师&#xff0c;随即被姜宁老师催稿&#xff0c;本来当天晚上写了一个流水账&#xff0c;感觉甚为不妥。于是决定慢慢写&#xff0c;缓缓道来。要同时兼顾Show me the code&#xff0c;Show me the vide。希望能形成一…

6-7 TIM编码器接口 [江科协STM32]

一、引入&#xff08;1&#xff09;编码器接口的好处&#xff1a;节约软件资源&#xff1a;外部中断计次&#xff0c;程序频繁进入中断&#xff0c;则软件资源会被简单频繁的工作给占用&#xff0c;效率不高使用定时器的编码器接口&#xff0c;再配合编码器&#xff0c;就可以测…

01数据结构-交换排序

01数据结构-交换排序1.冒泡排序1.1基础冒泡排序1.1.1基础冒泡排序代码实现1.2冒泡排序的一次优化1.2.1冒泡排序的第一次优化代码实现1.3冒泡排序的二次优化1.3.1 冒泡排序的二次优化代码实现2.快速排序2.1双边循环法2.1.1双边循环法的代码实现2.2单边循环法2.2.1单边循环法代码…

MySQL架构和储存引擎

MySQL服务器整体架构如下&#xff1a;连接层&#xff1a;连接层的作用是处理客户端的连接&#xff0c;如何管理连接的。网络端口和连接管理线程&#xff1a;网络端口&#xff1a;一台服务器可以连接网络上多个端口的客户连接&#xff0c;只需要开放多个端口&#xff0c;只需要在…

详解flink java基础(一)

文章目录1.流式处理flink介绍2.Flink SQL介绍3. Flink Runtime4.使用flink集成kafka5.使用Flink SQL进行有状态流处理6.Event time & Watermarks7. flink Checkpoints & recovery1.流式处理flink介绍 实时服务依赖流式处理: flink优点: 高性能丰富的特性&#xff1a…

Day119 持续集成docker+jenkins

Day119 dockerjenkins 1.Dockerfile Dockerfile 可以用于项目部署。通过编写 Dockerfile&#xff0c;可以将整个项目及其所需的依赖项打包到一个 Docker 镜像中&#xff0c;然后在任何支持 Docker 的环境中部署和运行该镜像 Dockerfile 是用于构建 Docker 镜像的文本文件。它包…

Vue3+Vite MPA多页面应用开发完整指南 – 从零搭建到部署优化

什么是 MPA 多页面应用 MPA&#xff08;Multi-Page Application&#xff09;是由多个独立的 HTML 页面组成的应用&#xff0c;每个页面都有独立的入口文件。与 SPA 不同&#xff0c;MPA 的每个页面都是独立的&#xff0c;页面间通过链接跳转&#xff0c;适合大型项目或需要 SE…

【企业级架构】企业战略到技术落地的全流程【第一篇】

目录 一、人生蓝图与企业罗盘&#xff1a;战略视角下的成长架构 1. 大学毕业迷茫期 → 企业未制定战略前&#xff1a;无方向、无目标​ 2. 制定职业规划 → 企业战略制定&#xff1a;明确 “去哪” 和 “分几步走”​ 3. 盘点自身能力差距 → 业务架构梳理&#xff1a;搞清…

(二) Python + 地球信息科学与技术 = 经典案例分析

目录 四、农业精准施肥与产量预测&#xff08;植被指数 机器学习&#xff09; 五、公共场所踩踏事故预警系统&#xff08;时空大数据 Web 开发&#xff09; 六、森林火灾智能识别与救援路径规划&#xff08;遥感 路径优化&#xff09; 七、海岸线侵蚀动态监测与防护&…