使用PyPDF2模組處理PDF檔案通用方法技巧

2021-09-18 07:14:05 字數 2126 閱讀 6549

基本概念:pdf和word文件是二進位制檔案,除了文字之外還儲存字型,顏色,布局等資訊。

處理pdf檔案,使用pypdf2模組,pypdf2不能從pdf文件中提取影象、圖表或其他**,但可提取文字,作為字串返回。

讀取pdf檔案步驟: 首先以讀二進位制模式開啟pdf檔案,然後將開啟檔案file物件傳遞給pypdf2.pdffilereader()函式,例如:

pdf=open(r』c:/users/fmz/desktop/rotate.pdf』,『rb』)

pdfreader=pypdf2.pdffilereader(pdf)

讀取的文件的總頁數儲存在pdffilereader物件的numpages屬性中,使用pdfreader.numpages可得總頁數

從一頁中提取文字,需要先取得page物件,使用pdfreader.getpage(傳入頁碼順序,從0開始)。取得page物件後呼叫它的

extracttext()方法,即page.extracttext()則返回該頁文字的字串(文字提取並不完美,有時會缺失一些文字)

解密pdf :所有的pdffilereader物件都有乙個isencrypted屬性,如果加密返回true否則返回false。在檔案用正確的口令

解密之前,嘗試呼叫函式來讀取檔案會返回錯誤。解密pdf使用pdfreader.decrypt(『口令字串』)函式,提供正確的口令返回1

否則返回0。

建立pdf:使用pdffilewriter物件建立pdf例如pdfwriter=pypdf2.pdffilewriter(),但pypdf2模組不可以利用其將任何文

本寫入pdf,該物件僅限從其他pdf中拷貝頁面、旋轉頁面、重疊頁面以及加密檔案。pypdf2模組不允許直接編輯pdf,必須

建立乙個新的pdf,其一般步驟為:

1) 開啟乙個或多個已有的pdf得到pdffilereader物件;

2) 建立乙個新的pdffilereader物件;

3) 將頁面從pdffilereader物件拷貝到pdffilewriter物件中;

4) 最後利用pdffilewriter物件寫入輸出的pdf。

實際生成檔案需呼叫pdffilewriter物件的write()方法。write()方法接受乙個普通的以寫二進位制模式?開啟的file物件。

拷貝頁面:得到pdffilereader物件後,在其上呼叫getpage()取得page物件,然後將page物件傳遞給pdffilewriter物件的

addpage()方法,例如pdfwriter.addpage(page物件),在拷貝頁面完成後,向pdffilewriter物件的write()方法傳入乙個file

物件,例如使用下列語句即可實現新pdf的寫入。

pdfout=open(r』combinedminutes.pdf』,『wb』)

pdfwriter.write(pdfout)

pdfout.close()

旋轉頁面:對page物件使用rotateclockwise()(順時針旋轉)和rotatecounterclockwise()(逆時針旋轉)方法可使pdf文

檔頁面旋轉90度的整數倍,向這些方法傳入90,180,270就可以了。例如page.rotateclockwise(90)將頁面順時針旋轉90度。

疊加頁面:pypdf2模組可將一頁的內容疊加到另一頁上實現在頁面上新增公司標誌,時間戳或水印等。對page物件呼叫

mergepage(疊加的page物件)方法可實現page的疊加,例如使用firstpage.mergepage(pdfreader.getpage(0))語句可實現

將pdfreader物件的第一頁疊加到firstpage頁上。

加密pdf:在呼叫write()方法儲存檔案之前,對pdffilewriter物件呼叫encrypt(『口令字串』)方法可實現對文件的加密。pdf

文件可以有乙個使用者口令(允許檢視該pdf)和乙個擁有者口令(允許設定列印、注釋、提取文字和其他功能的許可)。使用者

口令和擁有者口令分別是encrypt()的第乙個和第二個引數,如果只傳入乙個字串,那它將作為兩個口令。例如:

pdfwriter.encrypt(『swordfish』)

open(r』combinedminutes.pdf』,『wb』)

pdfwriter.write(pdfout)

pdfout.close()

pyPdf和pyPdf2在合併pdf時的那個異常

當乙個pdf檔案有多page的時候,它將出來見你!方法是取直接修改那個檔案generic.py 1 pypdf 路徑大約在這裡 usr lib python2.7 site packages pypdf generic.py if data.has key key multiple definiti...

Python利用PyPDF2庫獲取PDF檔案總頁碼

python中可以利用pypdf2庫來獲取該pdf檔案的總頁碼,可以根據下面的方法一步步進行下去 1 首先,要安裝pypdf2庫,利用以下命令即可 pip install pypdf22 接著,就是直接編寫 了,其中我新建了乙個py檔案,名為file utils.py,如下 from pypdf2 ...

Python中用PyPDF2拆分pdf提取頁面

有時候我們只需要pdf中的幾頁,或許還想把這幾頁內容整合成新的pdf,那該怎麼做呢?準備工作 安裝擴充套件庫pypdf2,參考命令 pip install pypdf2 如下 from pypdf2 import pdffilereader,pdffilewriter defsplit pdf fi...