PyPDF2詳解


工作中可能會涉及處理pdf文件,PyPDF2就是這樣一個庫, 使用它可以輕松的處理pdf文件,它提供了讀、寫、分割、合並、文件轉換等多種操作。官方地址:http://mstamy2.github.io/PyPDF2/

安裝

1. RPM式系統(Redhat、CentOS)

1
pip  install  pypdf2

2. DEB式系統(Debian、Ubuntu)以下任一

1
2
pip  install  pypdf2
apt  install  python-pypdf2

3. Windows

1
pip  install  pypdf2

使用

PyPDF2 包含了 PdfFileReader PdfFileMerger PageObject PdfFileWriter 四個常用的主要 Class。

簡單讀寫

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from  PyPDF2  import  PdfFileReader, PdfFileWriter
readFile  =  'read.pdf'
writeFile  =  'write.pdf'
# 獲取一個 PdfFileReader 對象
pdfReader  =  PdfFileReader( open (readFile,  'rb' ))
# 獲取 PDF 的頁數
pageCount  =  pdfReader.getNumPages()
print (pageCount)
# 返回一個 PageObject
page  =  pdfReader.getPage(i)
# 獲取一個 PdfFileWriter 對象
pdfWriter  =  PdfFileWriter()
# 將一個 PageObject 加入到 PdfFileWriter 中
pdfWriter.addPage(page)
# 輸出到文件中
pdfWriter.write( open (writeFile,  'wb' ))

 

合並分割 PDF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from  PyPDF2  import  PdfFileReader, PdfFileWriter
def  split_pdf(infn, outfn):
     pdf_output  =  PdfFileWriter()
     pdf_input  =  PdfFileReader( open (infn,  'rb' ))
     # 獲取 pdf 共用多少頁
     page_count  =  pdf_input.getNumPages()
     print (page_count)
     # 將 pdf 第五頁之后的頁面,輸出到一個新的文件
     for  in  range ( 5 , page_count):
         pdf_output.addPage(pdf_input.getPage(i))
     pdf_output.write( open (outfn,  'wb' ))
def  merge_pdf(infnList, outfn):
     pdf_output  =  PdfFileWriter()
     for  infn  in  infnList:
         pdf_input  =  PdfFileReader( open (infn,  'rb' ))
         # 獲取 pdf 共用多少頁
         page_count  =  pdf_input.getNumPages()
         print (page_count)
         for  in  range (page_count):
             pdf_output.addPage(pdf_input.getPage(i))
     pdf_output.write( open (outfn,  'wb' ))
if  __name__  = =  '__main__' :
     infn  =  'infn.pdf'
     outfn  =  'outfn.pdf'
     split_pdf(infn, outfn)

其他命令

如果是要修改一個已有的 pdf 文件,可以將 reader 的頁面添加到 writer 中:

pdfWriter.appendPagesFromReader(reader)

添加書簽:

pdfWriter.addBookmark(title, pagenum, parent=parent)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM