【python实用小脚本-193】Python全能PDF小助手:剪切/合并/旋转/加密一条龙——再也不用开会员

Python全能PDF小助手:剪切/合并/旋转/加密一条龙——再也不用开会员

PDF编辑, 本地处理, 零会员费, 多功能脚本, 瑞士军刀

故事开场:一把瑞士军刀救了周五下班的你

周五 17:55,老板甩来一堆 PDF:

  • “把第 3、7 页删掉”
  • “再和合同合并”
  • “全部顺时针转 90°”
  • “最后加个密码”

你打开 Acrobat,发现要会员,在线工具排队 20 分钟。
这时,你从 U 盘掏出“小白瑞士军刀”——pdf_tools.py
一条命令一条提示,30 分钟任务全部搞定,老板直呼“效率王”!
痛点解决:再也不用多个软件来回折腾,本地一站式搞定所有 PDF 操作。


完整代码(>1000字符,展示核心骨架)

from PyPDF2 import PdfFileReader, PdfFileWriter, PdfFileMerger
from pathlib import Path# 主菜单
print("INFO 查看信息 | OUTPUT 提取文字 | PDF 裁剪页面 | ADD 合并 | CW/ACW 旋转 | PWD 加密")
cmd = input("输入指令: ").upper()pdf_path = Path.home() / "myfile.pdf"
pdf = PdfFileReader(str(pdf_path))if cmd == "INFO":print("标题:", pdf.documentInfo.title, "页数:", pdf.getNumPages())elif cmd == "OUTPUT":mode = input("FULL 全文 / PAGE 单页? ").upper()if mode == "FULL":with open('fulltext.txt', 'w') as f:for p in pdf.pages:f.write(p.extractText())elif mode == "PAGE":n = int(input("第几页? "))print(pdf.getPage(n).extractText())elif cmd == "PDF":while True:pg = int(input("保留哪一页? "))writer = PdfFileWriter()writer.addPage(pdf.getPage(pg))with Path("sliced.pdf").open("wb") as out:writer.write(out)if input("继续加页? YES/NO ").upper() != "YES":breakelif cmd == "ADD":f1, f2 = input("两个文件名(空格分隔): ").split()merger = PdfFileMerger()for f in [f1, f2]:merger.append(str(Path.home() / f))with Path("concatenated.pdf").open("wb") as out:merger.write(out)elif cmd == "CW":writer = PdfFileWriter()for p in pdf.pages:writer.addPage(p.rotateClockwise(90))with Path("rotated.pdf").open("wb") as out:writer.write(out)elif cmd == "PWD":pwd = input("输入密码: ")writer = PdfFileWriter()writer.appendPagesFromReader(pdf)writer.encrypt(user_pwd=pwd)with Path("protected.pdf").open("wb") as out:writer.write(out)

代码解析

功能块 1:信息速览

一句话打印标题、页数,先让你心里有底。

print("标题:", pdf.documentInfo.title, "页数:", pdf.getNumPages())

功能块 2:文本提取

全文或单页一键导出 .txt,方便二次编辑。

with open('fulltext.txt', 'w') as f:for p in pdf.pages:f.write(p.extractText())

功能块 3:页面裁剪/合并/旋转/加密

  • 裁剪:按页码生成 sliced.pdf
  • 合并:多文件一键拼接
  • 旋转:顺时针/逆时针 90°
  • 加密:AES 密码保护
writer.addPage(p.rotateClockwise(90))
writer.encrypt(user_pwd=pwd)

如果还想更厉害

扩展点子 1:批量文件夹

docs/ 里所有 PDF 合并成一本电子书。

import glob
merger = PdfFileMerger()
for pdf in glob.glob("docs/*.pdf"):merger.append(pdf)
merger.write("all_in_one.pdf")

扩展点子 2:GUI 拖放

tkinter 做窗口,拖文件即执行操作。

import tkinter.filedialog as fd
file = fd.askopenfilename()
# 复用相应逻辑

总结

pdf_tools.py 这把 150 行瑞士军刀,把“开 N 个软件→上传→下载”五步压缩成“一条命令”。
你无需会员、无需联网,就能在本地完成 PDF 裁剪、合并、旋转、加密全套操作。
再加两行批量或 GUI,它就从脚本升级成 PDF 工厂。
下次再遇“PDF 小手术”,直接跑脚本,30 秒收工!


源码获取

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

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

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

相关文章

Ubuntu根分区扩容

目录 1.先查看/dev/sda 整块磁盘设备的分区占用情况: 2.在VMware中编辑虚拟机: 3.进入虚拟机,进入disk应用程序: 4.扩容文件系统 5.最后通过df-h lsblk或通过可视化GParted进行验证。 1.先查看/dev/sda 整块磁盘设备的分区占…

智慧城市SaaS平台/市政设施运行监测系统之空气质量监测系统、VOC气体监测系统、污水水质监测系统及环卫车辆定位调度系统架构内容

1. 空气质量监测系统1) 监测点管理 a) 监测点基本信息 支持记录空气质量监测点的名称、位置、类型、设备配置等信息。 b) 监测点分布地图 支持通过GIS地图展示监测点的分布情况,支持地图查询和导航。 2) 空气质量监测 a) 实时数据采集 支持实时采集空气质量数据&…

PiscCode迅速集成YOLO-Pose 实现姿态关键点轨迹跟踪应用

在计算机视觉领域,人体姿态检测与轨迹跟踪是很多应用场景的核心技术,例如运动分析、行为识别、智能监控等。本文将介绍如何在 PiscCode 平台上,利用 YOLO-Pose 模型进行姿态估计,并实现多人关键点轨迹跟踪。 一、什么是 PiscCode …

HTTP的状态码有哪些,并用例子说明一下

问题HTTP的状态码有哪些,并用例子说明一下我的回答HTTP状态码是服务器对客户端请求的响应码,它们按照不同的功能被分为五大类。我来介绍一下主要的状态码及其实际应用场景:1xx(信息性状态码):表示请求已接收…

【51单片机】【protues仿真】基于51单片机宠物投食器系统

目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 一、主要功能 1、LCD1602液晶显示当前时间 2、按键设置时间,5个定时投喂时间​ 3、可以通过手动按键进行投喂食物 4、步进电机模拟投喂食物 二、使用步骤 基于51单片机的宠物自动投…

掌握设计模式--命令模式

命令模式(Command Pattern) 命令模式(Command Pattern)是一种行为型设计模式,它将请求(命令)封装成对象,从而使您能够参数化客户端(调用者)使用不同的请求、…

STM32之beep、多文件、延迟、按键以及呼吸灯

一、Beep控制 原理图分析: 蜂鸣器三极管控制引脚对应 MCU PB8。当前蜂鸣器对应的电路中,三极管是 NPN 三极管,当前【基极】存在小电流,当前三极管导通。要求对应 PB8 引脚对外输出电压 / 电流。当前 PB8 输出高电平,当…

C++的struct里面可以放函数,讨论一下C++和C关于struct的使用区别

我们来看一个C代码下面的struct结构体: struct UserValue {float lx;float ly;float rx;float ry;float L2;// 【构造函数】UserValue() {setZero();}// 【成员函数】void setZero() {lx 0;ly 0;rx 0;ry 0;L2 0;} };在这篇文章中,我们将来详细解释一下为什么 U…

【Kubernetes知识点】资源配额与访问控制

目录 1.解释ResourceQuota的作用。 2.解释Service Account的用途。 3.详细解释Role和ClusterRole。 4.什么是K8s的NetworkPolicy? 5.详细描述在K8s中如何控制跨Namespace的Pod访问? 1.解释ResourceQuota的作用。 ResourceQuota(资源配额…

在SAP Query中添加双击事件

在SAP系统中,SAP Query是一个强大的工具,允许用户自定义报告以满足特定的数据查询需求。它提供了灵活的报表设计功能,使非编程背景的用户也能创建和修改查询。在某些情况下,我们可能希望在查询结果上添加交互性,比如通…

c++:MFC中sqlite3的使用(附实际案例)

MFC中sqlite3的使用sqlite3介绍sqlite3安装常用API函数操作流程接口函数执行sql语句函数回调函数MFC中案例实践控制台实践sqlite3介绍 SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL …

LeetCode第1019题 - 链表中的下一个更大节点

题目 解答 class Solution {Stack<Integer> stack new Stack<>();List<Integer> values new LinkedList<>();public int[] nextLargerNodes(ListNode head) {nextLargerNodes2(head);return values.stream().mapToInt(x -> x).toArray();}publi…

STM32 硬件I2C读写MPU6050

本文代码基于 STM32 单片机&#xff0c;通过 I2C 总线驱动 MPU6050 六轴传感器&#xff08;集成加速度计与陀螺仪&#xff09;&#xff0c;实现传感器初始化、ID 读取、原始数据采集&#xff0c;并借助 OLED 显示屏实时展示加速度&#xff08;AccX、AccY、AccZ&#xff09;与角…

倍福下的EC-A10020-P2-24电机调试说明

今天调试EC-A10020-P2-24电机&#xff0c;采用力位混合控制指令进行控制&#xff0c;无前馈力矩&#xff0c;只调节Kp和Kd,跟踪红色轨迹&#xff08;正弦信号&#xff1a;幅值10&#xff0c;频率0.5Hz&#xff09;&#xff0c;结果显示Kp 180, Kd 40&#xff0c;实际上Kp进一步…

SQL注入1----(sql注入原理)

一.前言前面我们讲解了一下信息收集&#xff0c;本章节我们来讲解一下sql注入的基本原理&#xff0c;我们拿之前搭建的测试网站pikachu来测试&#xff0c;对应工具包也已经放在了工具里面&#xff0c;大家可以自行去下载。SQL注入攻击漏洞的原因&#xff0c;是由于程序员在编写…

C++智能指针详解:用法与实践指南

C智能指针详解&#xff1a;用法与实践指南 在C编程中&#xff0c;动态内存管理始终是开发者面临的重要挑战。手动分配和释放内存不仅繁琐&#xff0c;还容易因疏忽导致内存泄漏、悬垂指针等问题。为解决这些痛点&#xff0c;C标准库引入了智能指针&#xff08;Smart Pointers&a…

fastdds qos:DurabilityQosPolicy

假如DataWriter先起来&#xff0c;并且已经写了一些数据&#xff0c;之后有新的DataReader起来&#xff0c;那么新起来的DataReader能不能接收到它启动之前&#xff0c;DataWriter发布的数据呢。DurabilityQosPolicy用来做这种控制。VOLATILE_DURABILITY_QOS&#xff1a;易失的…

【读代码】SQLBot:开源自然语言转SQL智能助手原理与实践

一、项目简介 SQLBot 是 DataEase 团队开源的自然语言转 SQL 智能助手,致力于让非技术用户也能通过自然语言与数据库对话,自动生成 SQL 查询,实现自助数据分析、智能BI问答、报表生成等场景。SQLBot 结合了大语言模型(LLM)、数据库元数据解析、SQL解析与执行等多项技术,…

开题报告被退回?用《基于大数据的慢性肾病数据可视化分析系统》的Hadoop技术,一次通过不是梦

&#x1f496;&#x1f496;作者&#xff1a;计算机编程小咖 &#x1f499;&#x1f499;个人简介&#xff1a;曾长期从事计算机专业培训教学&#xff0c;本人也热爱上课教学&#xff0c;语言擅长Java、微信小程序、Python、Golang、安卓Android等&#xff0c;开发项目包括大数…

HEVC(H.265)与HVC1的关系及区别

HEVC&#xff08;H.265&#xff09;与HVC1的关系及区别可归纳如下&#xff1a;一、技术定义差异‌HEVC&#xff08;H.265&#xff09;‌国际标准化组织制定的通用视频编码标准&#xff0c;由ITU-T和ISO/IEC联合开发‌1支持8K分辨率&#xff0c;压缩效率较H.264提升约50%‌1‌HV…