幾個(gè)關(guān)于python Pdf 技巧的分享
前言:
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è)面。
到此這篇關(guān)于python使用技巧Pdf的詳細(xì)內(nèi)容介紹的文章就介紹到這了,更多相關(guān)python使用技巧Pdf介紹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
帶你徹底搞懂python操作mysql數(shù)據(jù)庫(kù)(cursor游標(biāo)講解)
這篇文章主要介紹了帶你徹底搞懂python操作mysql數(shù)據(jù)庫(kù)(cursor游標(biāo)講解),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01python實(shí)現(xiàn)各種插值法(數(shù)值分析)
這篇文章主要介紹了python實(shí)現(xiàn)各種插值法(數(shù)值分析),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07基于Python輕松實(shí)現(xiàn)PDF轉(zhuǎn)圖片
PDF文件是我們?cè)谌粘9ぷ骱蛯W(xué)習(xí)中常用的文檔格式之一,但你知道嗎,你可以將PDF文件轉(zhuǎn)換為圖像,讓文檔變得更加生動(dòng)有趣,下面我們就來(lái)看看具體的實(shí)現(xiàn)方法吧2023-08-08Python3與fastdfs分布式文件系統(tǒng)如何實(shí)現(xiàn)交互
這篇文章主要介紹了Python3與fastdfs分布式文件系統(tǒng)如何實(shí)現(xiàn)交互,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Python實(shí)現(xiàn)的統(tǒng)計(jì)文章單詞次數(shù)功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的統(tǒng)計(jì)文章單詞次數(shù)功能,結(jié)合實(shí)例形式分析了Python針對(duì)字符串序列的遍歷、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07一篇文章搞懂python混亂的切換操作與優(yōu)雅的推導(dǎo)式
這篇文章主要給大家介紹了如何通過(guò)一篇文章搞懂python混亂的切換操作與優(yōu)雅的推導(dǎo)式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-08-08