PDF文件切割,无大小限制

news2024/9/29 22:51:48

前言

公司让学习一个东西,让写一个学习总结,我想这不是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.coloradmin.cn/o/2066190.html

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

相关文章

Java开发笔记-小程序微信支付接入

步骤&#xff1a; 1.注册微信商户&#xff0c;开通小程序支付业务&#xff0c;获得必要接入参数。(Certificate、PrivateKey、merchantId、SerialNumbe、apiV3Key) 2.微信商户号关联小程序(需目标小程序审核) 3.java使用接入参数发起下单&#xff0c;获取下单参数。 4.小程…

新手设计师看一看!2024年PDF转CAD软件TOP4

在现在这个啥都能数字化的时代&#xff0c;文件格式得来回换已经成了我们工作的日常&#xff0c;特别是把PDF转成CAD&#xff0c;对工程师、设计师还有搞建筑的人来说&#xff0c;这事儿特别重要。技术越发展&#xff0c;市面上就出现了好些又快又方便的工具。今天&#xff0c;…

AI+新质生产力,化敌为友的新未来

“新质生产力”是今年的“高频词”。如何将“新质生产力”落到实处&#xff0c;业内纷纷瞄准了同一个关键词&#xff1a;“人工智能”&#xff0c;特别是 “人工智能” &#xff0c;这个小小的""号代表着无限的可能性。人工智能正在成为现代社会的基础设施&#xff0…

便签内容转移新设备攻略

在桌面使用便签软件记录工作和生活中的点点滴滴&#xff0c;已成为许多人的习惯。它不仅能帮助我们捕捉灵感、记录待办事项&#xff0c;还能提醒我们重要的日程安排。然而&#xff0c;随着设备的更新换代或工作地点的变更&#xff0c;我们有时需要将便签内容从一个设备转移到另…

多门店多端平台系统小程序源码

&#x1f525;【健身新纪元】多门店多端分开健身系统&#xff0c;打造你的个性化健身体验&#x1f31f; &#x1f3cb;️‍♀️ 一、告别单一&#xff0c;拥抱多元化健身时代 你还在为找不到合适的健身房而烦恼吗&#xff1f;或是想要随时随地开启健身模式&#xff0c;却受限…

聚水潭ERP集成用友NC(用友NC主供应链)

源系统成集云目标系统 用友NC介绍 用友NC是用友NC产品的全新系列&#xff0c;是面向集团企业的世界级高端管理软件。它以“全球化集团管控、行业化解决方案、全程化电子商务、平台化应用集成”的管理业务理念而设计&#xff0c;采用J2EE架构和先进开放的集团级开发平台UAP&am…

UDS 诊断 - ReadDataByPeriodicIdentifier(按周期性标识符读取数据)(0x2A)服务

UDS 诊断服务系列文章目录 诊断和通信管理功能单元 UDS 诊断 - DiagnosticSessionControl&#xff08;诊断会话控制&#xff09;&#xff08;0x10&#xff09;服务 UDS 诊断 - ECUReset&#xff08;ECU重置&#xff09;&#xff08;0x11&#xff09;服务 UDS 诊断 - SecurityA…

5个网络监控神器,别说老网工藏私不发给你

前言 是2022年度的精选网络工具安利贴&#xff0c;你都看了没&#xff1f; 现在啊&#xff0c;很多企业公司都有不少的网络硬件&#xff0c;而这些网络硬件设备根据不同的功能&#xff0c;会分散在不同的物理位置上。 可能有些网络硬件设备是集中式管理&#xff0c;有些只能…

2024年掏耳勺买什么样的好?四款优良产品推荐,不可错过

21世纪的到来&#xff0c;全民生活品质得到了飞跃进步&#xff0c;大家逐渐开始关注耳道的健康清洁。传统挖耳勺因直径大、材质硬、无法看清耳道等因素&#xff0c;往往很难满足大部分人群的清洁需求&#xff0c;甚至带来不可逆转的伤害。可视挖耳勺的出现&#xff0c;具备可视…

C++第四十弹---从零开始:模拟实现C++中的unordered_set与unordered_map

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1 哈希概念 2 哈希冲突 3 哈希函数 4 哈希冲突解决 4.1 闭散列 4.1.1. 线性探测 4.1.2. 二次探测 4.2 开散列 4.2.1. 开散列概念 4.2.2…

安卓逆向百例十-币coin

typora-root-url: ./pic安卓逆向百例十-币coin 现在售价依旧是99&#xffe5;,计划更新100案例&#xff0c;平均一个案例1块钱&#xff0c;要什么自行车&#xff01; 案例起源&#xff1a; 有位老哥 经过炒币失败后想做一个这种查询接口的app&#xff0c;但是苦于他的资金比…

windows系统搭建WSUS更新服务问题整理

1、连接微软更新服务器时&#xff0c;总是连接失败&#xff0c;采取了指定TLS1.2连接的方法&#xff0c;还是连接失败。 解决方法&#xff1a;当时服务器的操作系统为windows server 2012 R2&#xff0c;将操作系统换成windows server 2016可以解决这个问题。 2、客户端怎么配…

Linux发送邮件:如何配置SMTP服务器发信?

linux发送邮件至多个收件人的方法&#xff1f;如何用Linux命令&#xff1f; 在Linux系统中&#xff0c;邮件发送是一个常见且重要的功能&#xff0c;无论是用于系统监控通知还是日常通信。AokSend将详细介绍如何在Linux环境下配置SMTP服务器&#xff0c;以确保您的邮件发送既高…

探索RAG与Multi-Agent的结合:解决复杂任务的新方法

最近帮企业定制了一个langgraphrag的项目&#xff0c;跟大家简单介绍一下设计架构和具体的应用。如果大家有兴趣&#xff0c;我也可以出一期视频&#xff0c;给大家详细介绍一下。我们会一步步探讨如何构建一个可以控的Agent&#xff0c;以执行RAG任务&#xff0c;并最终展示一…

C#为复杂属性提供下拉式编辑框和弹出式编辑框

一.为属性提供编辑类 弹出式和下拉式是如何实现的呢&#xff0c;这需要为属性提供一个专门的编辑类。.Net为我们提供了一个System.Drawing.Design.UITypeEditor类&#xff0c;它是所有编辑类的基类&#xff0c;从他继承出了诸如ColorEditor、FontEditor的类&#xff0c;因此我们…

信刻光盘摆渡系统安全合规实现跨网数据单向导入/导出

在当今信息化、数字化时代&#xff0c;各种数据传输和储存技术发展迅速&#xff0c;各安全领域行业对跨网数据交互需求日益迫切&#xff0c;数据传输的安全可靠性对于整个过程的重要性不可忽视。应如何解决网络安全与效率之间的矛盾&#xff0c;如何安全合规地实现跨网数据单向…

Spring Cloud Gateway 之动态路由

前言 熟悉 Spring Cloud Gateway 的人都知道 Gateway 提供了鉴权、路由等功能&#xff0c;本篇我们重点分析的是 Gateway 的动态路由功能。 Gateway Actuator API 方法源码解析 Spring Cloud Gateway 的 Actuator 端点允许监视 Spring Cloud Gateway 应用程序并与之交互&…

k8s学习(三十八) 使用OpenTelemetry+jaeger实现链路追踪

文章目录 前言一、安装jaeger二、安装cert-manager三、安装OpenTelemetry Operator四、配置 OpenTelemetry Collector五、配置 Instrumentation六、编写java示例程序并测试调用链跟踪 前言 OpenTelemetry 可以用于从应用程序收集数据。它是一组工具、API 和 SDK 集合&#xff…

《黑神话:悟空》Steam全球评价出炉:18个语言区好评率超90%

《黑神话&#xff1a;悟空》Steam在线人数已经不断打破纪录&#xff0c;连续三天刷榜&#xff0c;目前最高成绩超过241万。这个成绩也稳坐总榜第二&#xff0c;同时也是单机游戏的历史第一。 除了游玩人数之外&#xff0c;该作的评价口碑也非常出色&#xff0c;根据媒体汇总的数…

Flutter->`Flutter` 通过`ffi`调用`Rust`编译生成的产物.so文件(Android)和.a文件(iOS)接口方法

flutter_rust_ffi Flutter 通过ffi调用Rust编译生成的产物.so文件(Android)和.a文件(iOS)接口方法; 拾用本文您将获取以下技能: Rust编译.so文件的能力;Rust编译.a文件的能力;Flutter调用.so文件的能力;Flutter调用.a文件的能力; 附加Buff: Flutter环境安装指南;Rust环境安…