电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python利用PyPDF2快速拆分PDF文檔

瀏覽:34日期:2022-06-15 10:36:08
目錄安裝PyPDF2模塊創建文件,準備PDF文檔萬事俱備,準備開拆文檔的拆分思路python拆分計算公式:具體怎么拆?完整拆分程序:列表拆分法實現拆分PDF寫在最后

“人生苦短,快學Python”,因為這句口號,我也加入了學習Python的浩浩大軍,但由于Python真的是可以做的事情太多了,一時迷了眼,不知道自己應該去專攻哪個方向。

經過多方向試探,我還是選擇了廣而不深的web開發,Python的web開發自然離不開大名鼎鼎的Django,有一次突發奇想,下載了Django的PDF版文檔,心想方便查閱,但懵逼的是PDF版竟然只有英文版,將近1900多頁,無奈只能找一些平臺的文檔翻譯功能,大部分需要付費,免費的限制很多,例如免費用戶每次最多只能翻譯5頁,而且文檔大小最大不能超過5M到10M。怎么辦?學Python的人會怕這個嗎?

拆分,拆分是最好的解決辦法,人工去拆嗎?1900多頁,估計得累死,那么對于Python來說,則非常簡單,今天跟隨我走入實戰,一起學習PyPDF2模塊,快速實現拆分,讓你真正理解什么叫“人生苦短,我用Python”!

安裝PyPDF2模塊

這個模塊嚴格區分大小寫,y是小寫,其余大寫

pip3 install PyPDF2

Python利用PyPDF2快速拆分PDF文檔

安裝完成之后呢,在本地硬盤創建一個專門存放本項目的文件夾,我這里在的存放路徑是 F:PythonPyPDF2,在F盤有個Python文件夾,在其中又創建了一個以這個模塊命名的文件夾,來單獨存放和與別的項目區分。

創建文件,準備PDF文檔

Python利用PyPDF2快速拆分PDF文檔

Django官網下載了他的幫助文檔,這個文檔足夠大,1900多頁,對于練手絕對夠了,有需要的去官網下載,然后再創建一個PDFCF.py 的項目文件。

萬事俱備,準備開拆

程序開始兩行,寫上下邊這兩句,第一句的意思是指定這個文件的運行程序,第二句是對這個文件的說明,這個的作用現在還看不出來,但如果你知道怎么批量化快速執行程序,你就知道了它的作用,這里不做贅述。

#! python# PDFCF.py - pdf文件拆分程序文檔的拆分思路

不固定拆分成多少份,但固定每一份由多少頁組成,然后來動態的計算拆分的份數,拆分思路有了,那么下來就是列出計算公式。

拆分的份數= 文檔總頁數 / 拆份每個pdf組成的頁數

舉個例子:

假如我們要拆分一個總頁數為35頁的pdf文檔,按照每10頁組成一個新文檔,那么能拆分成多少份的計算公式如下:3.5 = 35 / 10

這時候大家注意了,除不盡有余數0.5,說明什么?用這個例子來說就是拆分成3份還余下5頁,那么遇到這種情況不管余數是幾都得向前進1,才能完成整個拆分,這個文檔拆分的結果就是,前3個文檔每個由10頁組成,第四個文檔則由最后5頁組成,能整除則結果直接就是拆分的份數。

python拆分計算公式:

if 35 % 10:# 判斷是否有余數 35 // 10 + 1 # 取余數整數部分加1else: 0 # 能整除則直接返回0 # 將這個循環寫到一行4 = 35 // 10 + 1 if 35 % 10 else 0具體怎么拆?

還是以這個35頁的文檔拆分為例:循環遍歷每一頁數據 for num in range(35),得到每一頁的數據,之后再指定拆分頁數范圍進行拆分:

第一個文檔從0--10,不包含10 第二個文檔從10--20 ,不包含20 第三個文檔從 20 -30,不包含30 第四個文檔從30--35,不包含35

我們發現規律,每次遍歷第一個數字的規律是 一個文檔的頁數,乘以自己屬于第幾個便可以得到。第二個數我們發現沒規律了,其實仔細觀察也有規律,假如我們對拆分個數排序,這個例子就是1--4,第二個數字就是當前屬于第幾個拆分數乘以每個文檔組成的頁數(頁數是固定的10)。可是我們第一次遍歷的時候從0開始,就讓num變得不通用,那么我們改造一下從1開始遍歷,range(1,35),從一開始遍歷,基于range不包含本身最后一個的特性,這樣遍歷出來就少了一頁文檔,那么我們給他加1,變成

for num in range(1, 35+1) 第一個文檔從10*(1-1)--10*1,不包含10 第二個文檔從10*(2-1)--10*2 ,不包含20 第三個文檔從 10*(3-1) -10*3, 不包含30 第四個文檔從10(4-1)--35

具體遍歷代碼如下:

for num in range(1,35+1): pass for i in range(10 * (num-1), 10 * num if num != 4 else 35):pass

注意:當遍歷到 num = 4(最后一個文檔排序數時),直接返回 總頁數35就可以了,到這里遍歷就結束了。這里為什么是總頁數35 而不是35+1呢?是因為此次遍歷我們是從0開始遍歷的,頁碼從0開始,所以不需要加1了。

完整拆分程序:

import PyPDF2# 打開一個可讀的pdf對象pdfReader = PyPDF2.PdfFileReader(’django.pdf’)# 獲取pdf總頁數pdfnums = pdfReader.numPages# 每個拆分文檔由多少頁組成innumber = 100# 計算拆分份數outnums = pdfnums // innumber + 1 if pdfnums % innumber else 0for num in range(1,pdfnums): # 創建空白的pdf pdfWriter = PyPDF2.PdfFileWriter() # 提取指定頁面范圍 for pageNum in range(innumber * (num - 1), innumber * num if num != outnums else pdfnums):# 獲取到每一頁的內容pageObj = pdfReader.getPage(pageNum)# 將每一頁的內容添加到第一次循環創建的空白文檔對象中pdfWriter.addPage(pageObj) # 保存并寫入本地文件,并對每個文檔重命名 with open(’PDFREAD %s’ % num + ’.pdf’, ’wb’) as pdfOutputFile:pdfWriter.write(pdfOutputFile)

注意:上邊這種拆分思路我個人感覺比較繞,如果你對Python列表的切邊以及步長概念理解透徹的話,我覺得不需要這么復雜,只需要把總頁碼生成一個大列表,再把這個列表利用切片的方法拆分成多個小列表,之后每個拆分的pdf頁碼范圍就是每個小列表第一個數--最后一個數+1,我把我用列表方法實現的代碼也貼出來供大家參考。

列表拆分法實現拆分PDF

#! python# PDFCF.py - pdf文件拆分程序import PyPDF2# import LISTCF# 打開一個可讀的pdf對象pdfReader = PyPDF2.PdfFileReader(’django.pdf’)# 獲取pdf總頁數pdfnums = pdfReader.numPages # 將總頁碼循環到一個列表中pagenum_list = list(range(pdfnums))n = 100# 將總頁碼按照指定的個數分為多個小列表page_list = [pagenum_list[i:i + n] for i in range(0, len(pagenum_list), n)]for i in range(len(page_list)): # 創建一個空白的pdf pdfWriter = PyPDF2.PdfFileWriter() # 提取指定頁面 for pageNum in range(page_list[i][1], page_list[i][-1]+1): pageObj = pdfReader.getPage(pageNum) pdfWriter.addPage(pageObj) with open(’PDFREAD %s’ % i + ’.pdf’, ’wb’) as pdfOutputFile: pdfWriter.write(pdfOutputFile)

怎么用?

在項目文件夾內部按住Shift鍵,點擊鼠標右鍵,選擇在此處打開命令窗口,輸入PDFCF.py,回車即可,根據自己的需求去更改 n 的值。

Python利用PyPDF2快速拆分PDF文檔

寫在最后

給大家分享下我的學習方法,一般在寫程序的時候盡量先不動手寫,而是先想思路,理清思路,這樣會避免在寫的過程中磕磕絆絆的情況,這個程序其實并不完美,還可以指定切分數量,自動計算每一頁包含多少,還可以只提取多頁到多少頁這種需求,所以后邊這兩個需求留給大家思考完成,后邊我會貼出自己的代碼及思路。

到此這篇關于Python利用PyPDF2快速拆分PDF文檔的文章就介紹到這了,更多相關Python 拆分PDF 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 基本型顶空进样器-全自动热脱附解吸仪价格-AutoHS全模式-成都科林分析技术有限公司 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 新密高铝耐火砖,轻质保温砖价格,浇注料厂家直销-郑州荣盛窑炉耐火材料有限公司 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 拉伸膜,PE缠绕膜,打包带,封箱胶带,包装膜厂家-东莞宏展包装 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 圆盘鞋底注塑机_连帮鞋底成型注塑机-温州天钢机械有限公司 | 昆山新莱洁净应用材料股份有限公司-卫生级蝶阀,无菌取样阀,不锈钢隔膜阀,换向阀,离心泵 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 锂电池砂磨机|石墨烯砂磨机|碳纳米管砂磨机-常州市奥能达机械设备有限公司 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 巨野月嫂-家政公司-巨野县红墙安康母婴护理中心 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 深圳装修_店面装修设计_餐厅设计_装修全包价格-尚泰装饰设计 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 实验室隔膜泵-无油防腐蚀隔膜泵-耐腐蚀隔膜真空泵-杭州景程仪器 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 球磨机,节能球磨机价格,水泥球磨机厂家,粉煤灰球磨机-吉宏机械制造有限公司 | 自动售货机_无人售货机_专业的自动售货机运营商_免费投放售货机-广州富宏主官网 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 气力输送_输送机械_自动化配料系统_负压吸送_制造主力军江苏高达智能装备有限公司! | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | 不锈钢螺丝,不锈钢螺栓,不锈钢标准件-江苏百德特种合金有限公司 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 楼承板-开闭口楼承板-无锡海逵楼承板 | 焦作网 WWW.JZRB.COM | 湖南教师资格网-湖南教师资格证考试网 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 首页|光催化反应器_平行反应仪_光化学反应仪-北京普林塞斯科技有限公司 | 雨水收集系统厂家-雨水收集利用-模块雨水收集池-徐州博智环保科技有限公司 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | VOC检测仪-甲醛检测仪-气体报警器-气体检测仪厂家-深恒安科技有限公司 | 滁州高低温冲击试验箱厂家_安徽高低温试验箱价格|安徽希尔伯特 | 立式_复合式_壁挂式智能化电伴热洗眼器-上海达傲洗眼器生产厂家 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 |