網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
前言:
PyPDF2是一個(gè)純Python的開(kāi)源庫(kù),能夠分割或合并PDF文件,也可以裁剪或轉(zhuǎn)換PDF文件中的頁(yè)面。我們還可以使用PyPDF2查看PDF文件的元信息,對(duì)PDF文件進(jìn)行加密等。
PyPDF2是一個(gè)開(kāi)源的庫(kù),因此在使用之前需要先安裝。
pip install PyPDF2
1.讀取PDF
import PyPDF2 reader = PyPDF2.PdfFileReader(open('a.pdf','rb')) print(reader.getNumPages()) print(reader.getIsEncrypted()) print(reader.getDocumentInfo()) page = reader.getPage(8) print(page.extractText())
首先導(dǎo)入PyPDF2
模塊,然后以二進(jìn)制讀模式打開(kāi)a.pdf文件,并將它傳遞給PdfFileReader
類的初始化函數(shù)。PdfFileReader的初始化函數(shù)會(huì)返回一個(gè)PdfFileReader
類的對(duì)象,我們可以使用這個(gè)對(duì)象來(lái)獲取PDF文件的信息。
通過(guò)getNumPages
函數(shù)獲取pdf的總頁(yè)數(shù),通過(guò)getIsEncrypted
函數(shù)獲取文件是否加密,通過(guò)getDocumentInfo函數(shù)獲取文件的元數(shù)據(jù),通過(guò)傳遞下標(biāo)給getPage函數(shù)的方式獲取PDF頁(yè)面,下標(biāo)從0開(kāi)始,與Python內(nèi)置的字符串、列表和元組等保持一致。通過(guò)PageObject
類的extractText
方法提取頁(yè)面中的文本。從該方法的返回結(jié)果來(lái)看,提取PDF文本的效果并不理想。
2.刪除pdf的某些頁(yè)
思路:PyPDF2
并不能直接編輯PDF文件,但是我們可以利用PyPDF2從一個(gè)PDF文檔拷貝需要的頁(yè)面到另一個(gè)PDF文檔,通過(guò)這種迂回的方式實(shí)現(xiàn)編輯PDF的功能。例如刪掉a.pdf中的第一頁(yè)
import PyPDF2 reader = PyPDF2.PdfFileReader(open('a.pdf','rb')) output = PyPDF2.PdfFileWriter() for i in range(1,reader.getNumPages()): ? ? output.addPage(reader.getPage(i)) outputStream = open ("b.pdf","wb") output.write(outputStream) outputStream.close()
3.旋轉(zhuǎn)頁(yè)面
PageObject
類中有部分方法可以修改PDF頁(yè)面,其中rotateClockwise
和rotateCounterClockwise
方法用來(lái)旋轉(zhuǎn)頁(yè)面。這兩個(gè)方法只接受一個(gè)參數(shù),且參數(shù)取值必須是90的倍數(shù),表示旋轉(zhuǎn)多少度。
import PyPDF2 reader = PyPDF2.PdfFileReader(open('a.pdf','rb')) output = PyPDF2.PdfFileWriter() page = reader.getPage(0) page.rotateClockwise(180) output.addPage(page) outputStream = open ("b.pdf","wb") output.write(outputStream) outputStream.close()
4.合并pdf
from PyPDF2 import PdfFileMerger merger = PdfFileMerger() a = open("a.pdf",'rb') b = open("b.pdf",'rb') c = open("c.pdf",'rb') merger.append(fileobj = a,pages = (0,3)) merger.merge(position=2,fileobj=b,pages=(0,1)) merger.append(c) output = open("d.pdf","wb") merger.write(output)
append
方法通過(guò)fileobj
參數(shù)確定要添加的PDF文件,通過(guò)pages參數(shù)指定要將哪些PDF頁(yè)面添加到新的PDF文件中,并將要添加的頁(yè)面添加到merger對(duì)象的末尾。merge方法相對(duì)于append方法,增加了position參數(shù),我們可以通過(guò)position參數(shù)指定頁(yè)面插人的位置。append方法和merge方法的pages參數(shù)非常靈活,該參數(shù)是一個(gè)三元組(start,stop[,step]),分別表示起點(diǎn)、終點(diǎn)和步長(zhǎng)。我們可以通過(guò)該參數(shù)指定合并PDF文件中的頁(yè)面。
原文鏈接:https://blog.51cto.com/u_3764469/5039076
相關(guān)推薦
- 2022-09-07 教你應(yīng)用?SOLID?原則整理?React?代碼之單一原則_React
- 2022-11-26 docker安裝portainer方法詳細(xì)步驟_docker
- 2022-05-22 部署ASP.NET?Core程序到Linux系統(tǒng)_基礎(chǔ)應(yīng)用
- 2022-07-19 element-ui表單動(dòng)態(tài)添加必填校驗(yàn)
- 2022-06-22 深入淺析C/C++?的條件編譯_C 語(yǔ)言
- 2022-06-11 C#把DataTable導(dǎo)出為Excel文件_C#教程
- 2024-04-23 Win11老是提示資源管理器已停止工作怎么解決
- 2022-07-11 Android?ListView列表優(yōu)化的方法詳解_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支