python 解析pdf文件的首、尾頁
1.如何解析指定頁面而不是文件的全部?
2.利用哪些三方庫?
一、PDF文件解析
1.將輸入尾的文件提取出首頁和尾頁(import PyPDF2 )
def getdespdf(self,path):
# print("輸出路徑為:", self.file_path_out)
fp=open(path,"rb") #開啟輸入檔案路徑
fr=PdfFileReader(fp) #讀取pdf 輸入流
output=PdfFileWriter() #輸出流
lastpage = fr.getNumPages() #根據輸入流得到pdf文件的總頁數
end_index = lastpage - 1
# testnu=fr.getPageNumber()
pages_index =[0,end_index] #首頁和尾頁的 index 組成一個元組
for i in pages_index:
output.addPage(fr.getPage(i)) #取到首頁和尾頁,載入進輸出流
outputstream = open(self.file_path_out,"wb") #確定提取後需要儲存到的位置
output.write(outputstream)#儲存首頁和尾頁 得到一個新的pdf檔案
#closed stream
outputstream.close() #常規操作,關閉流
fp.close()
2.解析新組成的pdf,並返回內容字串
def parsein(self,path):
result_text = []
fp_in = open(path, 'rb') #開啟檔案
parser = PDFParser(fp_in) #pdf解析器
doc = PDFDocument() #建立一個文件物件
# 連線分析器與文件物件
parser.set_document(doc)
doc.set_parser(parser)
# 提供初始化密碼
doc.initialize()# 檢測文件是否提供txt轉換,不提供就忽略,功能不需要
#if not doc.is_extractable:
# raise PDFTextExtractionNotAllowed
#else:
# 建立PDF資源管理器來共享資源
rsrcmgr = PDFResourceManager()
# 建立一個PDF裝置物件
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 建立一個PDF直譯器物件
interpreter = PDFPageInterpreter(rsrcmgr, device)for page in doc.get_pages():
# 使用頁面直譯器來讀取
interpreter.process_page(page)
# 接受該頁面的LTpage物件
layout = device.get_result()for x in layout:
if (isinstance(x, LTTextBoxHorizontal)):
# with open(r'parseresult.txt', 'a') as f:
results = x.get_text() #str型別
#f.write(results + "\n")
result_text.append(results) #之後轉換為二進的list型別
return result_text #這裡返回的是list型別