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)

運行正常,搞定了!

白開了一個月的會員啊!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82571.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82571.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82571.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【計網】SW、GBN、SR、TCP

目錄 三種可靠傳輸機制&#xff08;數據鏈路層&#xff09; 停止-等待&#xff08;Stop and Wait&#xff0c;SW&#xff09;協議 回退N幀&#xff08;Go-back-N&#xff0c;GBN&#xff09;協議 選擇重傳&#xff08;Selective Repeat&#xff0c;SR&#xff09;協議 傳輸…

Go的隱式接口機制

正確使用Interface 不要照使用C/Java等OOP語言中接口的方式去使用interface。 Go的Interface的抽象不僅可以用于dynamic-dispatch 在工程上、它最大的作用是&#xff1a;隔離實現和抽象、實現完全的dependency inversion 以及interface segregation(SOLID principle中的I和D)。…

Async-profiler 內存采樣機制解析:從原理到實現

引言 在 Java 性能調優的工具箱中&#xff0c;async-profiler 是一款備受青睞的低開銷采樣分析器。它不僅能分析 CPU 熱點&#xff0c;還能精確追蹤內存分配情況。本文將深入探討 async-profiler 實現內存采樣的多種機制&#xff0c;結合代碼示例解析其工作原理。 為什么需要內…

Android 顏色百分比對照

本文就是簡單寫個demo,打印下顏色百分比的數值.方便以后使用. 1: 獲取透明色 具體的代碼如下: /*** 獲取透明色* param percent* param red* param green* param blue* return*/public static int getTransparentColor(int percent, int red, int green, int blue) {int alp…

MPLS-EVPN筆記詳述

目錄 EVPN簡介: EVPN路由: 基本四種EVPN路由 擴展: EVPN工作流程: 1.啟動階段: 2.流量轉發: 路由次序整理: 總結: EVPN基本術語: EVPN表項: EVPN支持的多種服務模式: 簡介: 1.Port Based: 簡介: 配置實現: 2.VLAN Based: 簡介: 配置實現: 3.VLAN Bundle: 簡…

SpringBoot自定義線程池詳細教程

文章目錄 1. 線程池基礎概念1.1 什么是線程池1.2 Java線程池核心參數1.3 線程池執行流程 2. SpringBoot中的線程池2.1 SpringBoot默認線程池2.2 SpringBoot異步任務基礎 3. 自定義線程池配置3.1 配置文件方式3.2 Java配置方式3.3 線程池工廠配置 4. 異步任務實際應用4.1 業務服…

智能快遞地址解析接口如何用PHP調用?

一、什么是智能快遞地址解析接口 隨著互聯網技術的普及和電子商務的迅猛發展&#xff0c;網購已成為現代人日常生活的重要組成部分。然而&#xff0c;在這個便捷的背后&#xff0c;一個看似不起眼卻影響深遠的問題正悄然浮現——用戶填寫的快遞地址格式混亂、信息不全甚至錯漏…

概率分布,支撐AI算法的數學基石

概率分布,是現代人工智能(AI)算法不可或缺的數學語言。它不僅描述了數據中的不確定性,更揭示了機器學習模型背后的本質運作機制。本文將帶你深入了解概率分布的數學本質,以及它在監督學習、深度學習、生成模型等核心AI領域的關鍵作用,揭秘概率論如何成為AI理論和實踐的強…

2025年Splunk的替代方案:更智能的安全選擇

在安全信息和事件管理&#xff08;SIEM&#xff09;領域&#xff0c;2025年的競爭愈發激烈。Splunk憑借其強大的功能和穩定性長期占據市場主導地位&#xff0c;但其高昂的成本、復雜性和擴展性挑戰促使許多企業轉向其他解決方案。無論是初創公司、快速發展的中型企業&#xff0…

(10)Fiddler抓包-Fiddler如何設置捕獲Firefox瀏覽器的Https會話

1.簡介 經過上一篇對Fiddler的配置后&#xff0c;絕大多數的Https的會話&#xff0c;我們可以成功捕獲抓取到&#xff0c;但是有些版本的Firefox瀏覽器仍然是捕獲不到其的Https會話&#xff0c;需要我們更進一步的配置才能捕獲到會話進行抓包。 2.環境 1.環境是Windows 10版…

simulink mask的使用技巧

1.mask界面布局 1.1如何調整控件的位置和控件大小&#xff1f; 反正2020a是調不了&#xff0c; 找了好久&#xff0c;只能是調布局&#xff0c;例如你要調成下面這樣&#xff1a; 第一個控件的iTem location屬性選擇New row 后面跟著的幾個和第一個同一行的空間屬性選擇Cu…

Go中MAP底層原理分析

MAP底層原理分析 參考 https://golang.design/go-questions/map/principalmap | Golang 中文學習文檔 先來看一下map結構體&#xff0c;&#xff08;runtime.hmap結構體就是代表著 go 中的map&#xff0c;與切片一樣map的內部實現也是結構體&#xff09; type hmap struct {/…

#開發環境篇:postMan可以正常調通,但是瀏覽器里面一直報403

本地header代理下面內容即可 headers: { // 添加必要的請求頭 ‘Host’: ‘服務端域名’, ‘Origin’: https://服務端域名, ‘Referer’: https://服務端域名 }, devServer: {// 本地開發代理API地址proxy: {^/file: {target: https://服務端域名,changeOrigin: true, // 是否…

【論文閱讀 | PR 2024 |ICAFusion:迭代交叉注意力引導的多光譜目標檢測特征融合】

論文閱讀 | PR 2024 |ICAFusion&#xff1a;迭代交叉注意力引導的多光譜目標檢測特征融合 1.摘要&&引言2.方法2.1 架構2.2 雙模態特征融合&#xff08;DMFF&#xff09;2.2.1 跨模態特征增強&#xff08;CFE&#xff09;2.2.2 空間特征壓縮&#xff08;SFS&#xff09;…

效率、便捷、安全:智慧充電樁一站式解決方案如何重塑新能源充電體驗?

在新能源浪潮席卷全球的背景下&#xff0c;電動汽車的普及對充電基礎設施提出了更高要求。傳統充電模式因效率低、操作繁瑣、安全隱患等問題&#xff0c;難以滿足用戶需求。智慧充電樁一站式解決方案應運而生&#xff0c;通過技術創新將效率、便捷與安全融為一體&#xff0c;徹…

杰發科技AC7840——Timer修改重裝載值

需要在運行過程中修改定時器的中斷時間 int main(void) {SystemClock_Config(); /*時鐘初始化*/GPIO_LedInit(); /*GPIO初始化*/TIMER_Init(); /*定時器初始化*/InitDebug(); …

https和http有什么區別-http各個版本有什么區別

http和 https的區別 HTTP&#xff08;超文本傳輸協議&#xff09;和 HTTPS&#xff08;安全超文本傳輸協議&#xff09;是兩種用于在網絡上傳輸數據的協議&#xff0c;它們的主要區別在于安全性&#xff1a; HTTP&#xff08;Hypertext Transfer Protocol&#xff09;&#x…

低秩矩陣、奇異值矩陣和正交矩陣

低秩矩陣 低秩矩陣&#xff08;Low-rank Matrix&#xff09;是指秩&#xff08;rank&#xff09;遠小于其行數和列數的矩陣&#xff0c;即 r a n k ( M ) r ? min ? ( m , n ) rank(M) r \ll \min(m,n) rank(M)r?min(m,n)。其核心特點是信息冗余性&#xff0c;可通過少量…

對抗性提示:大型語言模型的安全性測試

隨著大語言模型&#xff08;LLM&#xff09;在虛擬助手、企業平臺等現實場景中的深度應用&#xff0c;其智能化與響應速度不斷提升。然而能力增長的同時&#xff0c;風險也在加劇。對抗性提示已成為AI安全領域的核心挑戰&#xff0c;它揭示了即使最先進的模型也可能被操縱生成有…

SSM 框架核心知識詳解(Spring + SpringMVC + MyBatis)

&#x1f331; 第一部分&#xff1a;Spring 核心原理與使用 1. 什么是 Spring Spring 是一個開源的 Java 企業級開發框架&#xff0c;旨在簡化 Java 企業應用程序開發。它核心思想是控制反轉&#xff08;IoC&#xff09;和面向切面編程&#xff08;AOP&#xff09;&#xff0…