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

相关推荐
2301_816660211 小时前
PHP怎么处理Eloquent Attribute Inference属性推断_Laravel从数据自动推导类型【操作】
jvm·数据库·python
第一程序员1 小时前
数据工程 pipelines 实践
python·github
知行合一。。。2 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
郝学胜-神的一滴2 小时前
深度学习必学:PyTorch 神经网络参数初始化全攻略(原理 + 代码 + 选择指南)
人工智能·pytorch·python·深度学习·神经网络·机器学习
qq_372154232 小时前
Go 中自定义类型与基础类型的显式转换规则详解
jvm·数据库·python
LiAo_1996_Y3 小时前
CSS如何实现文字渐变效果_通过background-clip实现艺术字
jvm·数据库·python
2401_887724503 小时前
CSS如何让表单在手机端友好展示_利用Flexbox实现堆叠排版
jvm·数据库·python
zhangchaoxies3 小时前
Layui轮播图(carousel)怎么设置自动播放间隔
jvm·数据库·python
FreakStudio3 小时前
无硬件学LVGL:基于Web模拟器+MiroPython速通GUI开发—布局与空间管理篇
python·单片机·嵌入式·面向对象·并行计算·电子diy
qq_372906934 小时前
如何在 Vuetify 中可靠捕获 Chip 关闭事件(包括键盘触发)
jvm·数据库·python