1. 程式人生 > 其它 >PyPDF2如何實現按照PDF頁碼提取後並另存為PDF格式檔案?

PyPDF2如何實現按照PDF頁碼提取後並另存為PDF格式檔案?

事情的經過是這樣的,由於現有的PDF檔案太多了而我真正需要的內容只有十幾頁。

每次查詢不方便,另外需要發給自己的小夥伴也太多別人也不容易找到需要的內容,所以產生了一個想法就是把需要的PDF提取出來然後另存為一個PDF檔案。

於是就有了這次的PDF頁面提取操作,下面進入實戰環節。

專案中用到的庫主要是PyPDF2用於PDF格式檔案的提取等操作,另外還需要os操作庫用來做檔案的讀寫、另存為操作。

【閱讀全文】

from PyPDF2 import PdfFileReader, PdfFileWriter  # PDF格式檔案操作

import os  # 系統檔案操作

第一步:初始化在PDF檔案操作過程中的相關引數。

# 定義檔案的操作路徑(需要提取內容的原檔案路徑)

file_path = 'data.pdf'

# 定義目標檔案路徑(已經提取好的檔案路徑)

output_file_path = ''

# 定義開始提取頁的頁碼

begin = '102'

# 定義結束提取頁的頁碼

end = '113'

# 初始化已經提取好的檔案路徑

output_file_path = output_file_path + f'({begin}~{end}).pdf'

第二步:判斷需要操作的原始檔案是否存在、判斷需要提取的頁碼是否在合理的範圍內。

# 判斷pdf檔案是否存在,存在則繼續讀取檔案

if os.path.isfile(file_path):
    global pdf_obj_reader
    pdf_obj_reader = PdfFileReader(file_path)  # 讀取原始檔案所有內容

# 判斷一下頁碼是否在合理的範圍內。

if begin < 1 or end > pdf_obj_reader.getNumPages():
    print('請輸入合理的頁面範圍')
else:
    exit(0)

第三步:根據需要提取內容的pdf頁碼範圍提取pdf內容並寫入PDF檔案寫入流。

# 初始化檔案寫入流。
global pdf_obj_writer

pdf_obj_writer = PdfFileWriter()


# 遍歷已經讀取的檔案流,提取需要的部分並寫入檔案寫入流。

for page_num in range(begin - 1, end):  # 由於讀取的頁面是從0開始,所以開始頁碼進行減1操作
    pdf_obj_writer.addPage(pdf_obj_reader.getPage(page_num))  # 將符合條件的頁碼對應內容寫入檔案寫入流

# 最後,將提取好的檔案流物件寫入到新定義好的PDF檔案中

with open(output_file_path, 'wb') as output_file_pdf:
    pdf_obj_writer.write(output_file_pdf)  # 寫入到指定檔案

到此,整個PDF內容提取和寫入的操作就完成了,感謝大家的支援。

【往期精彩】

浪漫的turtle,送給程式設計師自己的聖誕樹!

PyQt5 GUI:百度圖片下載器(文末附原始碼)

python3中的zip()、zip(*)、list()之間的靈活轉換!

python print() 函式的格式化字串輸出

PyQt5 GUI && Requests Api 做一個天氣查詢系統(文末領取完整程式碼)!

歡迎關注作者公眾號【Python 集中營】,專注於後端程式設計,每天更新技術乾貨,不定時分享各類資料!