PyPDF2如何實現按照PDF頁碼提取後並另存為PDF格式檔案?
阿新 • • 發佈:2021-12-22
事情的經過是這樣的,由於現有的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 集中營】,專注於後端程式設計,每天更新技術乾貨,不定時分享各類資料!