使用 pypdf 快速切分 PDF 文件
categories: [Python]
tags: Python MacOS
写在前面
最近有小伙伴问我怎么把 PDF 文档切分成两个大小相近的 PDF文档, 要是在 mac 上, 直接无脑预览就行了, 但是这样不够跨平台, 之后我也尝试过 pymupdf, 但是奈何不支持 arm 架构, 后来还是用 Python 原生的 pypdf 了.
有 AI 加持还是很方便
方法 1:mac 预览
使用预览左边的缩略图栏就可以方便地切分(删除页面)然后保存了. 纯手工操作.
方法 2: pypdf
先安装
python -m pip install pypdf
pypdf 和 PyPDF2 以及 PyPDF3 都是如出一辙, 但是后来 PyPDF2 合并到了 pypdf, 所以用 pypdf 即可.
上代码
#!/opt/homebrew/Caskroom/miniforge/base/envs/py3x/bin/python
import pypdf
import sysdef split_and_save(filename, split_num):pdf = pypdf.PdfReader(filename)pdf1 = pypdf.PdfWriter()pdf2 = pypdf.PdfWriter()page_count = len(pdf.pages)for i in range(split_num):pdf1.add_page(pdf.pages[i])for i in range(split_num, page_count):pdf2.add_page(pdf.pages[i])# save output pdf on current pathpdf1.write(f'{filename[:-4]}-part1.pdf')pdf2.write(f'{filename[:-4]}-part2.pdf')if __name__ == "__main__":if len(sys.argv) != 3:print("Usage: split-pdf.py <filename> <split_page_num>")exit(-1)filename = sys.argv[1]split_num = int(sys.argv[2])split_and_save(filename, split_num)
API还是很清晰的, 配合python 强大的表达力, 搞个 PDF 不在话下.
使用方法就是
python split.py input.pdf 10
参数是待切分 PDF 的文件名和从哪一页开始切分, 例如我传入参数是 10, 那就是前 10 页为一个新 PDF, 后面的是一个新的 PDF.
相关文章:
使用 pypdf 快速切分 PDF 文件
categories: [Python] tags: Python MacOS 写在前面 最近有小伙伴问我怎么把 PDF 文档切分成两个大小相近的 PDF文档, 要是在 mac 上, 直接无脑预览就行了, 但是这样不够跨平台, 之后我也尝试过 pymupdf, 但是奈何不支持 arm 架构, 后来还是用 Python 原生的 pypdf 了. 有 AI…...
Avalonia(11.0.2)+.NET6 打包运行到银河麒麟V10桌面系统
操作系统配置 项目结构 .net版本 这次我们是在银河麒麟V10系统上打包运行Avalonia(11.0.2)+.NET6.0的程序 开始打包 准备Linux下的桌面快捷方式以及图标 调整AvaloniaApplication2.Desktop.csproj的配置项,重点看下图红色线圈出来的部分,里面涉及到了LinuxPath的设置。完整的配…...
Mac nvm install failed python: not found
报错 $>./configure --prefix/Users/xxx/.nvm/versions/node/v12.22.12 < ./configure: line 3: exec: python: not found nvm: install v12.22.12 failed!解决方法 到 App 文件夹,并且打开 cd /System/Applications/Utilities/ open .记得改完 Rosetta 之…...
C语言基础知识复习(考研)
(1)C语言文件操作 1 什么是文件 文件有不同的类型,在程序设计中,主要用到两种文件: (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。 (2)数据文件。文件的内容不是…...
Prometheus Grafana 配置仪表板
#grafana# 其实grafana提供了丰富的Prometheus数据源的仪表板,基本上主流的都有,通过下面官方地址可查阅 Dashboards | Grafana Labs 这里举例说明,配置node_exporter仪表板 首先,在上面的网站搜索 node 可以查到蛮多的仪表板…...
docker 哲学 - 网络桥接器、容器网络接口 、容器间的通信方式
1、解释 docker0 veth eth 2、vethXX 和 ethXX 是肯定一一对应吗 比如 eth1 对应 veth1 3、如果 A容器使用 默认创建方式 。定义他内部网络为 eth0,容器B使用 --network 连上 已创建的网络 172.89.2.1 。此时假设 B的 ip是 172.89.2.2 ,容器网络接口是 e…...
Python 将HTML转为PDF、图片、XML、XPS格式
网页内容是信息传播的主要形式之一。在Web开发中,有时候我们需要将HTML文件以不同的格式保存或分享,比如PDF、图片(如PNG或JPEG)、XML或XPS等。这些格式各有优势,适合不同的用途。在这篇文章中,我们将介绍如…...
排序算法记录(冒泡+快排+归并)
文章目录 前言冒泡排序快速排序归并排序 前言 冒泡 快排 归并,这三种排序算法太过经典,但又很容易忘了。虽然一开始接触雀氏这些算法雀氏有些头大,但时间长了也还好。主要是回忆这些算法干了啥很耗时间。 如果在笔试时要写一个o(nlogn)的…...
简单聊聊如何更优雅地初始化对象:构造函数、Builder模式和静态工厂方法比较
大家好,我是G探险者。 在平时的java编程中,你肯定会有过对一些实体对象进行初始化的set操作,有的对象的属性较少可能还好点,当一个对象拥有许多属性时,通常的初始化方式可能显得笨拙而不直观,代码写的很不…...
跳过mysql权限验证来修改密码-GPT纯享版
建议重新配置一遍,弄成功好多次了,每次都出bug,又要重新弄,不是过期就是又登不进去了,我服了 电脑配置MySQL环境(详细)这个哥们的10min配完,轻轻松松, 旧方法ÿ…...
Vue3快速上手(十七)Vue3之状态管理Pinia
一、简介 Pinia官网:https://pinia.vuejs.org/zh/ 从官网截图里可以直接看到,pinia是一个vuejs的状态(数据)管理工具。功能性同vuex。logo是小菠萝。它是一个集中式状态管理工具。就是将多个组件共用的数据管理起来,重复利用。有点类似缓存的意思。 二、Pinia环境搭建 …...
时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测
时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测 目录 时序预测 | Matlab实现BiTCN-GRU双向时间卷积神经网络结合门控循环单元时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现BiTCN-GRU双向时间卷积神经网络结…...
学习笔记Day14:Linux下软件安装
软件安装 Anaconda 所有语言的包(package)、依赖(dependency)和环境(environment)管理器,类似应用商店 Conda < Miniconda < Anaconda(有交互界面) Linux下Miniconda即可 安装Miniconda 搜索北外/清华miniconda镜像网站ÿ…...
【CXL协议-事务层之CXL.io(3)】
3.1 CXL.io CXL.io 为 I/O 设备提供非一致的加载/存储接口。 图 14 显示了 CXL.io 事务层在 Flex Bus 分层结构中的位置。 交易类型、交易数据包格式、基于信用的流量控制、虚拟通道管理和交易排序规则遵循PCIe定义; 请参阅 有关详细信息,请参阅 PCI Ex…...
如何自己构建 Ollama 模型
如何自己构建 Ollama 模型 0. 引言1. 下载原始模型2. 创建 Modelfile 文件3. 构建 Ollama 模型4. 运行自构建的 Ollama 模型 0. 引言 针对模型新出的大模型,可能 Ollama Models Library 不提供,或者会在今后的某个时点提供。还有可能 Ollama Models Lib…...
5.84 BCC工具之tcpretrans.py解读
一,工具简介 tcpretrans工具追踪内核TCP重传函数,以显示这些重传的详细信息。 它专门用于追踪TCP重传事件。在网络通信中,重传是由于数据包丢失、损坏或延迟到达而需要重新发送的情况。tcpretrans通过利用Linux内核中的BPF(Berkeley Packet Filter)机制,能够实时捕获和…...
从0到1实现RPC | 03 重载方法和参数类型转换
一、存在的问题 1.重载方法在当前的实现中还不支持,调用了会报错。 2.类型转换也还存在问题。 假设定义的接口如下,参数是float类型。 在Provider端接受到的是一个Double类型,这是因为web应用接收的请求后处理的类型。 在反射调用的时候就会…...
Matlab之已知2点绘制长度可定义的射线
目的:在笛卡尔坐标系中,已知两个点的位置,绘制过这两点的射线。同时射线的长度可以自定义。 一、函数的参数说明 输入参数: PointA:射线的起点; PointB:射线过的零一点; Length&…...
虚拟机安装Linux系统,FinalShell远程连接Linux
1.虚拟机安装CentOS系统 2. 查看CentOS系统的ip地址 3. FinalShell远程连接Linux 3.虚拟机快照(存档) 确保虚拟机关机,找到快照模拟器 恢复快照...
MacOS Xcode 使用LLDB调试Qt的 QString
环境: MacOS: 14.3Xcode: Version 15.0Qt:Qt 6.5.3 前言 Xcode 中显示 预览 QString 特别不方便, 而Qt官方的 lldb 脚本debugger/lldbbridge.py一直加载失败,其他第三方的脚本都 不兼容当前的 环境。所以自己研究写…...
别再用Python了!在RK3588开发板上用C API部署RKNN模型,性能提升实战指南
别再用Python了!在RK3588开发板上用C API部署RKNN模型,性能提升实战指南 当你在RK3588开发板上完成YOLOv5模型的Python原型验证后,是否遇到过这样的困境:帧率始终卡在15FPS上不去,内存占用居高不下,多线程处…...
用ESP32-S3和LVGL做个桌面天气站:从硬件接线到API调用的完整流程
用ESP32-S3和LVGL打造高颜值桌面天气站:从硬件选型到动态UI的全栈指南 在创客圈里,ESP32系列开发板早已成为物联网项目的标配,而S3版本凭借双核240MHz主频、8MB PSRAM和丰富的外设接口,更是将性能提升到了新高度。这次我们要做的&…...
STC89C51与L298N驱动的超声波智能避障小车全流程开发指南
1. 项目概述与硬件选型 智能避障小车是嵌入式开发的经典练手项目,它能综合运用传感器技术、电机控制和实时数据处理等核心技能。这次我们要做的是一款基于STC89C51单片机L298N电机驱动HC-SR04超声波模块的智能小车,成本控制在200元以内,但功能…...
5分钟让Windows 11焕然一新:极速系统加速与性能优化终极指南
5分钟让Windows 11焕然一新:极速系统加速与性能优化终极指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter …...
我用AI Agent 20分钟造了一个全栈产品经理,覆盖前端+后端+AI大模型,产品从0到1全搞定!
我用AI Agent 20分钟造了一个全栈产品经理,覆盖前端后端AI大模型,产品从0到1全搞定!当别的PM还在用ChatGPT一个个问问题的时候,我已经把整个产品经理的知识体系打包成了一个AI技能包,随叫随到。前言 作为一个技术人&am…...
文墨共鸣GPU算力优化:StructBERT模型显存占用降低40%的部署技巧
文墨共鸣GPU算力优化:StructBERT模型显存占用降低40%的部署技巧 1. 项目背景与挑战 文墨共鸣是一个将深度学习算法与传统水墨美学相结合的语义相似度分析系统,基于阿里达摩院的StructBERT大模型。在实际部署中,我们发现原始模型存在明显的显…...
带式输送机传动滚筒的设计
目 录 摘要 ………………………………………………………………………………(Ⅰ) Abstract……………………………………………………………………………(Ⅱ) 第一章 绪论………………………………………………………………………(01) 1.1概述……………………………………………...
PCB 相关知识
一.PCB线宽单位换算:100mil 2.54mm 。二.在1盎司的铜厚上过1A电流需要,1mm(40mil)的线宽。三:不要并排打孔,需要错位打孔:防止回流平面被割裂,绕线辐射。且增加走线空间。四.1:mark…...
激光雕刻入门指南:5分钟掌握LaserGRBL完整使用技巧
激光雕刻入门指南:5分钟掌握LaserGRBL完整使用技巧 【免费下载链接】LaserGRBL Laser optimized GUI for GRBL 项目地址: https://gitcode.com/gh_mirrors/la/LaserGRBL 想要轻松操控激光雕刻机却担心操作复杂?LaserGRBL激光雕刻软件为你提供了完…...
忍者像素绘卷:天界画坊C++高性能推理引擎封装实战
忍者像素绘卷:天界画坊C高性能推理引擎封装实战 1. 为什么需要高性能推理引擎 在游戏开发和工业软件领域,实时图像生成和处理对性能要求极高。传统的Python推理框架虽然易用,但在延迟敏感场景下往往力不从心。这就是我们需要用C打造专属推理…...
