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

PDF文件转换之输出指定页到新的 PDF 文件

背景

一份 PDF 学习资料需要打印其中某几页,文件有几百兆,看到 WPS 有PDF拆分功能,但是需要会员,开了一个月会员后完成了转换。突然想到,会员到期后如果还要拆解的话,怎么办呢?PDF 文件拆解功能,自己写一个呗。

输入需求

Python 实现对 PDF从截取某几页的功能

根据输出的方案,拷贝代码到 PyCharm 编辑器:

from PyPDF2 import PdfFileWriter, PdfFileReaderdef extract_pages(input_pdf_path, output_pdf_path, start_page, end_page):"""从PDF文件中截取指定页码范围的页面,并保存为新的PDF文件。:param input_pdf_path: 输入PDF文件路径:param output_pdf_path: 输出PDF文件路径:param start_page: 开始页码(从0开始):param end_page: 结束页码(不包含该页)"""# 创建PdfFileWriter对象output = PdfFileWriter()# 打开输入PDF文件with open(input_pdf_path, "rb") as input_pdf_file:pdf_file = PdfFileReader(input_pdf_file)pdf_pages_len = pdf_file.getNumPages()# 检查页码范围是否有效if start_page < 0 or end_page > pdf_pages_len or start_page >= end_page:raise ValueError("无效的页码范围")# 添加指定页码范围的页面到输出文件for i in range(start_page, end_page):output.addPage(pdf_file.getPage(i))# 保存输出文件with open(output_pdf_path, "wb") as output_pdf_file:output.write(output_pdf_file)# 示例调用
input_pdf_path = "input.pdf"
output_pdf_path = "output.pdf"
start_page = 0  # 从第一页开始(页码从0开始)
end_page = 5    # 截止到第5页(不包含第5页)extract_pages(input_pdf_path, output_pdf_path, start_page, end_page)

依赖安装及运行

第一步,执行命令pip install PyPDF2 完成依赖的安装。

第二步,修改 input_pdf_path 、output_pdf_path 及页码信息。

第三步,执行脚本,有报错:

  1. PdfFileWriter is deprecated and was removed in PyPDF2 3.0.0. Use PdfWriter instead.
  2. PdfFileReader is deprecated and was removed in PyPDF2 3.0.0. Use PdfReader instead.
  3. reader.getNumPages is deprecated and was removed in PyPDF2 3.0.0. Use len(reader.pages) instead.
  4. reader.getPage(pageNumber) is deprecated and was removed in PyPDF2 3.0.0. Use reader.pages[page_number] instead.
  5. addPage is deprecated and was removed in PyPDF2 3.0.0. Use add_page instead.

按照提示,修改废弃方法为最新方法后的代码如下:

from PyPDF2 import PdfWriter, PdfReaderdef extract_pages(input_pdf_path, output_pdf_path, start_page, end_page):"""从PDF文件中截取指定页码范围的页面,并保存为新的PDF文件。:param input_pdf_path: 输入PDF文件路径:param output_pdf_path: 输出PDF文件路径:param start_page: 开始页码(从0开始):param end_page: 结束页码(不包含该页)"""# 创建PdfWriter对象output = PdfWriter()# 打开输入PDF文件with open(input_pdf_path, "rb") as input_pdf_file:pdf_file = PdfReader(input_pdf_file)pdf_pages_len = len(pdf_file.pages)# 检查页码范围是否有效if start_page < 0 or end_page > pdf_pages_len or start_page >= end_page:raise ValueError("无效的页码范围")# 添加指定页码范围的页面到输出文件for i in range(start_page, end_page):output.add_page(pdf_file.pages[i])# 保存输出文件with open(output_pdf_path, "wb") as output_pdf_file:output.write(output_pdf_file)# 示例调用
input_pdf_path = "/Applications/2022MyTextFiles/A.pdf"
output_pdf_path = "/Applications/2022MyTextFiles/B.pdf"
start_page = 0  # 从第一页开始(页码从0开始)
end_page = 5  # 截止到第5页(不包含第5页)extract_pages(input_pdf_path, output_pdf_path, start_page, end_page)

运行正常,搞定了!

白开了一个月的会员啊!

相关文章:

PDF文件转换之输出指定页到新的 PDF 文件

背景 一份 PDF 学习资料需要打印其中某几页&#xff0c;文件有几百兆&#xff0c;看到 WPS 有PDF拆分功能&#xff0c;但是需要会员&#xff0c;开了一个月会员后完成了转换。突然想到&#xff0c;会员到期后如果还要拆解的话&#xff0c;怎么办呢&#xff1f;PDF 文件拆解功能…...

浏览器之禁止打开控制台【F12】

前言 在有时我们的日常开发工作中&#xff0c;有些项目要求我们增加禁用控制台的要求&#xff0c;这种虽然很鸡肋&#xff0c;但是它确实存在&#xff0c;并且会让哈哈心里觉得很有成就感。 所以今天他来了。 文章目录 前言无限debugger实现思路&#xff1a;效果如下&#xff1…...

进阶智能体实战九、图文需求分析助手(ChatGpt多模态版)(帮你生成 模块划分+页面+表设计、状态机、工作流、ER模型)

🧠 基于 ChatGPT 多模态大模型的需求文档分析助手 本文将介绍如何利用 OpenAI 的 GPT-4o 多模态能力,构建一个智能的需求文档分析助手,自动提取功能模块、菜单设计、字段设计、状态机、流程图和 ER 模型等关键内容。 一、🔧 环境准备 在开始之前,请确保您已经完成了基础…...

GEARS以及与基础模型结合

理解基因扰动的反应是众多生物医学应用的核心。然而&#xff0c;可能的多基因扰动组合数量呈指数级增长&#xff0c;严重限制了实验探究的范围。在此&#xff0c;图增强基因激活与抑制模拟器&#xff08;GEARS&#xff09;&#xff0c;将深度学习与基因-基因关系知识图谱相结合…...

SFINAE(替换并不是错误)机制详解详解

C—SFINAE机制详解 1. 核心概念 SFINAE&#xff08;替换失败并非错误&#xff09;是C模板元编程的核心机制&#xff0c;它规定了&#xff1a; 在模板参数推导/替换过程中如果某个替换导致无效代码不会引发编译错误而是从候选函数集中静默移除该模板特化 关键特性 template …...

怎么用外网打开内网的网址?如在异地在家连接访问公司局域网办公网站

什么是内网&#xff1a;即本地网络&#xff0c;私有网&#xff0c;内网IP&#xff0c;如学校局域网&#xff0c;家庭内网&#xff0c;公司内部网络等。可以简单理解为同一个路由下的几个电脑网络。 外网概念&#xff1a;即公网&#xff0c;互联网&#xff0c;是相对于内网而言…...

计算机网络 | 1.1 计算机网络概述思维导图

附大纲&#xff1a; 计算机网络的概念 一个通过通信设备与线路把不同计算机系统连接起来&#xff0c;实现资源共享和信息传递的系统 计算机网络的组成 从组成成分上 硬件&#xff1a;主机、通信链路、交换设备、通信处理机软件&#xff1a;网络操作系统、聊天软件等协议&…...

AI对软件工程的影响及未来发展路径分析报告

目录 第一部分&#xff1a;引言 研究背景与意义 报告框架与方法论 第二部分&#xff1a;AI对不同行业软件工程的影响分析 数字化行业 制造业 零售业 工业领域 第三部分&#xff1a;大厂AI软件工程实践案例分析 微软 谷歌 阿里巴巴 华为 第四部分&#xff1a;未来…...

redis缓存与数据库协调读写机制设计

1.读机制&#xff1a; 读机制没有太大的争议点&#xff0c;因为缓存机制的设计&#xff0c;就是为了更快的命中目标数据&#xff0c;所以读机制先天固定好了&#xff1a;先去读取缓存&#xff0c;缓存未命中再去读取数据库。 2.写机制&#xff1a; 写机制其实也没什么争议点…...

最悉心的指导教程——阿里云创建ECS实例教程+Vue+Django前后端的服务器部署(通过宝塔面板)

各位看官老爷们&#xff0c;点击关注不迷路哟。你的点赞、收藏&#xff0c;一键三连&#xff0c;是我持续更新的动力哟&#xff01;&#xff01;&#xff01; 阿里云创建ECS实例教程 注意&#xff1a; 阿里云有300元额度的免费适用期哟 白嫖~~~~ 注册了阿里云账户后&#x…...

【Python】os模块

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1fa79; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f9e0; 一、技术原理剖析&#x1f4ca; 核心架构图解&#x1f4a1; 核心作用讲解&#x1f527; 关键技术模块说明⚖️ 技术选…...

Syslog 全面介绍及在 C 语言中的应用

Syslog 概述 Syslog 是一种工业标准的日志记录协议&#xff0c;用于在网络设备之间传递日志消息。它最早由 Eric Allman 在 1980 年代为 BSD Unix 开发&#xff0c;现在已成为系统和网络管理的重要组成部分。Syslog 协议允许设备将事件消息发送到中央服务器&#xff08;称为 sy…...

windows中Redis、MySQL 和 Elasticsearch启动并正确监听指定端口

Redis&#xff1a;在 localhost 上启动&#xff0c;并监听端口 6379 MySQL&#xff1a;在 localhost 上启动&#xff0c;并监听端口 3306 Elasticsearch&#xff1a;在 127.0.0.1 上启动&#xff0c;并监听端口 9300 1. Redis 确保 Redis 在 localhost 上启动并监听端口 6379…...

Paimon远程文件系统连接机制解析

Paimon 在处理与远程文件系统的连接和使用方面&#xff0c;设计了一套灵活的抽象机制。下面将结合源代码分析 Paimon 是如何实现这一点的。 核心思想是定义一个通用的 FileIO 接口&#xff0c;然后为不同的文件系统提供具体的实现。对于常见的 HDFS、S3、OSS 等&#xff0c;Pa…...

学者观察 | Web3.0的技术革新与挑战——北京理工大学教授沈蒙

导语 沈蒙老师认为Web3.0正推动形成新型数据基础设施架构和数据要素流通机制&#xff0c;有望在数字经济时代发挥重要作用&#xff0c;对我国经济发展和社会进步将产生深远影响。AI在推动Web3.0发展方面具有巨大的潜力&#xff0c;但在隐私保护、公平性与安全性等方面也存在“…...

pycharm终端遇不显示虚拟环境的问题

大部分我们用pycharm会配合我们的anaconda来使用&#xff0c;但是配置好后&#xff0c;可能会出现pycharm终端不显示虚拟环境的问题。 首先是确定不显示环境&#xff0c;下图中如果没有这个方框&#xff0c;就是不显示虚拟环境。此时用pip或者conda的命令是会提示不是 “不是内…...

聊聊网络变压器的浪涌等级标准是怎样划分的呢?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;聊聊网络变压器的浪涌等级标准是怎样划分的呢&#xff1f; 在和做防雷产品的客户的深度沟通网络变压器产品选型中发现&#xff1a;客户对网络变压器的浪涌等级划分也很希望有更深的了解&#xff0c;今天就这个问题和…...

2025年Google I/O大会上,谷歌展示了一系列旨在提升开发效率与Web体验的全新功能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

ONLYOFFICE文档API:编辑器的品牌定制化

在当今数字化办公时代&#xff0c;文档编辑器已成为各类企业、组织和开发者不可或缺的工具之一。ONLYOFFICE 文档提供的功能丰富且强大的文档编辑 API&#xff0c;让开发者能够根据自己的产品需求和品牌特点&#xff0c;定制编辑器界面&#xff0c;实现品牌化展示&#xff0c;为…...

HTTP/HTTPS与SOCKS5三大代理IP协议,如何选择最佳协议?

在复杂多变的网络环境中&#xff0c;代理协议的选择直接影响数据安全、访问效率和业务稳定性。HTTP、HTTPS和SOCKS5作为三大主流代理协议&#xff0c;各自针对不同场景提供独特的解决方案。本文将从协议特性、性能对比到选型策略&#xff0c;为您揭示如何根据业务需求精准匹配最…...

远程调用 | OpenFeign+LoadBalanced的使用

目录 RestTemplate 注入 OpenFeign 服务 LoadBalanced 服务 LoadBalanced 注解 RestTemplate 注入 创建 配置类&#xff0c;这里配置后 就不用再重新new一个了&#xff0c;而是直接调用即可 import org.springframework.cloud.client.loadbalancer.LoadBalanced; import …...

NSSCTF [NISACTF 2022]ezheap

2058.[NISACTF 2022]ezheap(堆溢出) [NISACTF 2022]ezheap 1.准备 2.ida分析 main函数 int __cdecl main(int argc, const char **argv, const char **envp) {char *command; // [esp8h] [ebp-10h]char *s; // [espCh] [ebp-Ch]setbuf(stdin, 0);setbuf(stdout, 0);s (cha…...

ADB推送文件到指定路径解析

您执行的命令 adb push ota.zip /sdcard/Download 中&#xff0c;目标路径 /sdcard/Download 是您显式指定的&#xff0c;因此 ADB 会直接将文件推送到此位置。具体过程如下&#xff1a; 1. 命令结构解析 adb push&#xff1a;ADB 的推送指令。ota.zip&#xff1a;本地计算机上…...

【HarmonyOS Next之旅】DevEco Studio使用指南(二十七) -> 开发云函数

目录 1 -> 开发流程 2 -> 创建并配置函数 2.1 -> 创建函数 2.2 -> 配置函数 3 -> 开发函数 4 -> 调试函数 4.1 -> 前提条件 4.2 -> 通过本地调用方式调试函数 4.3 -> 通过远程调用方式调试函数 5 -> 部署函数 1 -> 开发流程 云函数…...

ansible中的inventory.ini 文件详解

1. 主机定义 主机是 Ansible 管理的最小单元&#xff0c;可以是 IP 或域名&#xff0c;支持直接定义或附加参数。 基础语法 # 直接定义主机&#xff08;IP 或域名&#xff09; 192.168.1.10 example.com# 定义主机并指定连接参数&#xff08;如端口、用户等&#xff09; web…...

基于AOD-Net与GAN的深度学习去雾算法开发

基于AOD-Net与GAN的深度学习去雾算法开发 1. 引言 1.1 图像去雾研究意义 大气散射现象导致的图像质量退化对计算机视觉应用产生严重影响… 2. 理论基础 2.1 大气散射物理模型 经典模型描述为: I ( x ) = J ( x ) t ( x...

Rust 学习笔记:闭包

Rust 学习笔记&#xff1a;闭包 Rust 学习笔记&#xff1a;闭包用闭包捕获环境闭包类型推断和注释捕获引用或移动所有权将捕获的值移出闭包和 Fn Traits Rust 学习笔记&#xff1a;闭包 Rust 的闭包是匿名函数&#xff0c;可以保存在变量中&#xff0c;也可以作为参数传递给其…...

c# 获取电脑 分辨率 及 DPI 设置

using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices;/// <summary> /// 这个可以 /// </summary> class Program {static void Main(){//设置DPI感知try{SetProcessDpiAwareness(…...

基于频分复用导频的MMSE信道估计方法设计与仿真

基于频分复用导频的MMSE信道估计方法设计与仿真 摘要 本文详细研究了基于频分复用(FDM)导频的最小均方误差(MMSE)信道估计方法。首先介绍了无线通信系统中信道估计的基本原理和重要性,然后深入分析了频分复用导频结构的设计和MMSE估计算法的理论基础。我们使用Python实现了完…...

低代码开发模式下的应用交付效率优化:拖拽式交互机制研究

低代码开发平台凭借其可视化操作、快速构建、灵活扩展等核心特性&#xff0c;正在成为推动企业数字化转型的重要工具。 拖拽式开发&#xff0c;降低技术门槛 &#xff1a;图形化界面与模块化组件&#xff0c;用户无需编写复杂代码&#xff0c;只需通过简单的拖拽即可完成应用搭…...