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

PDF文件切割,无大小限制

前言

公司让学习一个东西,让写一个学习总结,我想这不是AI的拿手好戏,直接把近100M的PDF喂给他,然后他说吃不下,太大了

小事,那么多在线PDF工具网站,分分钟拆开,然后找了半天也都是有大小限制,不是20M就是50M,要不然就是下了软件还要开会员,搞烦的,自己写一个把

准备环境

1.python
2.pdf库 pip install PyPDF2==3.0.1
版本要注意一下,低版本的一些语法和下文代码可能对不上

配置

首先要按章节拆分出来,定义一个配置文件,比如第1章内容是从 第10页到20页拆成一个文件
这里要注意的是页码并不是PDF的右下角的页码,是整个文件第几页的含义,可以用Edge打开PDF,上面就有显示当前是第几页

我拆除下面的三个章节

154, 174
175, 205
206, 250

代码

import PyPDF2  
import sys  
import os  def split_specific_pages_to_pdf(input_pdf_path, output_pdf_path, start_page, end_page):  # 打开输入的 PDF 文件  with open(input_pdf_path, "rb") as input_pdf_file:  # 创建一个 PdfReader 对象  pdf_reader = PyPDF2.PdfReader(input_pdf_file)  # 确保请求的页面范围在PDF文件的页数范围内  if start_page < 1 or end_page > len(pdf_reader.pages) or start_page > end_page:  raise ValueError("无效的页面范围")  # 创建一个 PdfFileWriter 对象  pdf_writer = PyPDF2.PdfWriter()  # 遍历选定的页面  for page_number in range(start_page - 1, end_page):  # 注意这里的range起始值需要调整为start_page - 1  # 将当前页添加到 PdfWriter 对象  pdf_writer.add_page(pdf_reader.pages[page_number])  # 将所有选定页面写入新的 PDF 文件  with open(output_pdf_path, "wb") as output_pdf_file:  pdf_writer.write(output_pdf_file)  print(f"已保存: {output_pdf_path}")  if len(sys.argv) > 1:  input_pdf_path = sys.argv[1]
else:  print("没有传入额外的参数")sys.exit()if not os.path.isfile("config.txt"):print("配置文件不存在")sys.exit()with open('config.txt', 'r') as file: for line in file:  start, end = line.strip().split(',')start = int(start)end = int(end)split_specific_pages_to_pdf(input_pdf_path, f"file-{start}-{end}.pdf", start, end)

然后把配置文件、代码、PDF文件放在一个目录就可以了

python main.py xxxx.pdf
在这里插入图片描述
在这里插入图片描述

打包exe

功能确认的一般我喜欢打包成exe

pyinstaller --clean -w -F -i ico.ico --name=PDF文件切割.exe main.py

只需要把pdf拖到exe上就可以,不想写代码的话可以私信我exe
在这里插入图片描述


http://www.mrgr.cn/news/9572.html

相关文章:

  • Linux文件目录系统
  • ES6 中的 Set 对象
  • 【Linux入门】shell基础篇——shell的构成及基础调试
  • Excel VBA 编程学习指南,1.1 什么是VBA及其应用场景
  • 【ORACLE】listagg() 函数
  • 鸿蒙HarmonyOS开发:如何灵活运用动画效果提升用户体验
  • 深入解析浏览器与Web服务器的通信机制:从URL输入到页面渲染的全过程
  • Spring Boot OAuth2.0应用
  • HCIA云计算实验-1-存储实验
  • Linux云计算 |【第二阶段】SECURITY-DAY4
  • 学习记录:js算法(十):每日温度
  • 小程序 蓝牙API使用全流程
  • 从零开始搭建 LVS 高可用集群 (单机)
  • PDPS软件 那智机器人 (丰田版)离线程序导出处理
  • 华为nova2下无需root安装Metasploit
  • JDK、JRE、JVM关系
  • 记使用Github工作流下载解压重打包Artifacts
  • 【vscode】vscode+cmake+llvm+ninja开发环境的搭建(draft)
  • Nginx - 反向代理、缓存详解
  • 【Oracle19c】手工数据统计信息并导入dmp数据