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

PDF文件拆分, 不限制文件大小

运行前需要确认是否安装pypdf和tkinter
sudo pip isntall pypdf
sudo apt install python-tk
工具使用方式,运行代码后,会弹出文件资源管理器,选中需要拆分的pdf文件后点确认,然后按照提示按照页数拆分还是按照组拆分

from pypdf import PdfReader,PdfWriter import os from tkinter import filedialog,Tk defsplit_pdf_custom():root=Tk()root.withdraw()# 选文件 input_file=filedialog.askopenfilename(title="选择PDF文件",filetypes=[("PDF","*.pdf")])ifnot input_file:return# 选输出文件夹 output_folder=filedialog.askdirectory(title="选择输出文件夹")ifnot output_folder:output_folder=os.path.splitext(input_file)[0]+"_拆分"os.makedirs(output_folder,exist_ok=True)# 询问拆分方式print("\n选择拆分方式:")print("1. 按页数分组(如每50页一个文件)")print("2. 按文件数量平分(如拆成10个文件)")choice=input("输入1或2: ").strip()reader=PdfReader(input_file)total_pages=len(reader.pages)file_size_mb=os.path.getsize(input_file)/1024/1024ifchoice=="1":n=int(input(f"总{total_pages}页,每多少页拆一个文件? ")or"50")pages_per_file=nelse:num_files=int(input(f"总{total_pages}页,拆成多少个文件? ")or"5")pages_per_file=total_pages// num_files + (1 if total_pages % num_files else 0)# 执行拆分 file_count=0forstart inrange(0,total_pages,pages_per_file):writer=PdfWriter()end=min(start+pages_per_file,total_pages)fori inrange(start,end):writer.add_page(reader.pages[i])file_count+=1output_path=os.path.join(output_folder,f"部分{file_count:03d}_{start+1}-{end}页.pdf")withopen(output_path,'wb')as f:writer.write(f)est_size=(end-start)/total_pages*file_size_mbprint(f"✓ 部分{file_count}: {end-start}页, ~{est_size:.1f}MB")print(f"\n完成!共 {file_count} 个文件,保存在: {output_folder}")split_pdf_custom()
http://www.jsqmd.com/news/497635/

相关文章:

  • 携程任我行礼品卡回收秒变现攻略 - 京顺回收
  • 任务栏标语图片
  • 加一 - 题目笔记
  • MySQL主键设计原则与自增ID的潜在问题分析
  • 自动化测试常用函数(元素的定位)
  • 技术分享-日志链路追踪
  • 龙虾智能体不是玩具!国家安全部提醒:这3个防护步骤必做
  • (独自升级Lv.1)C++基础面试题
  • 从零学网安第四期--在kali里面制作木马程序并实现远程控制
  • 238. 除了自身以外数组的乘积
  • 自动驾驶购物车测试:超市里的交通拥堵难题——软件测试工程师的实战解构
  • 《MySQL数据库基础》4. 数据类型
  • 别再花冤枉钱了!强推10款国内免费降AI神器,一键破解论文AIGC难题(附传送门)
  • 基于Vue.js的实验室耗材管理系统设计与实现 毕业设计源码+论文+PPT
  • 基础 语法
  • 机器人关节润滑脂如何选择?工程师必须了解的技术指标
  • 数组指针:高效操作多维数组
  • MATLAB与CST联合仿真:快速建模超表面阵列,涡旋波生成与雷达散射优化
  • 分享两道关于运算符号的题目
  • 全息医疗诊断测试:医生在空中操作器官模型的精度验证
  • 嘎嘎降AI升级双引擎技术,9大检测平台达标率超99%
  • Java面试八股文问答集——大厂必备含金量20题
  • 挖洞必看!40 个漏洞挖掘姿势吐血整理,小白也能快速挖到洞
  • ASP.NET公交车管理系统的实现与设计(源代码+论文)
  • 基于springboot的作业批改系统设计与实现 毕业设计源码+论文+PPT
  • TPC标准基准测试:如何评估并建立TDengine时序数据库的性能基线
  • 【苍穹外卖|项目日记】 第二天
  • Day2 java的基础语法
  • 论文降AIGC太难?这10个国内免费降AI工具一键搞定降重(附全套传送门)
  • 第六:Jmeter - 从入门到精通 - 创建网络测试计划