公司船務部一個重要任務就是需要準備每單貨物的發票,從系統導出發票時是默認存為一個PDF文檔,在列印的時候,有多少個文件,就需要點多少次「列印」。如果能夠將當天的發票PDF檔合併在一個PDF裡面,只需要點一次「列印」即可完成。
在網上我們可以搜到很多PDF合併軟體,但在真實工作環境下並不是非常實用,比如有些PDF有封面頁,我們在合併的時候只需要第一個文件的封面即可,後續的只要封面後的內容。而PDF合併軟體是簡單粗暴的直接將所有內容合併,那合併後的文件就會多出很多我們不需要的「封面」。
Python有一個庫PyPDF2
可輕鬆解決這個小問題,可以實現任意選定頁面的合併。通過文件夾遍歷,可以將不同文件夾下的PDF按選定的頁面合併在一起,方便實用,毫不含糊。
%%time
import PyPDF2 #可從PDF文檔提取信息
import os #用於獲取需要合併的PDF文件所在路徑
path="data/" # 文件夾路徑
#1.獲取需要用於合併的文件名及路徑
files=[]
for file in os.listdir(path):
if file.endswith(".pdf"): #排除文件夾內的其它干擾文件,只獲取PDF文件
files.append(path+file)
#2.獲取每個PDF文件裡面需要的信息並添加到寫入文件
pdf_writer=PyPDF2.PdfFileWriter()
for file in files:
pdf_obj=open(file,rb)# 以二進位讀取,將保留PDF中的所有信息
pdf_reader=PyPDF2.PdfFileReader(pdf_obj)
for page_num in range(1,pdf_reader.numPages): #不要第一頁的封面,從第2頁開始獲取
page_obj=pdf_reader.getPage(page_num)
pdf_writer.addPage(page_obj)
#3.寫入並保存匯總PDF文件
pdf_output_file=open("datacombined_inv.pdf",wb) #以二進位寫入,將保留源PDF中的所有信息
pdf_writer.write(pdf_output_file)
pdf_output_file.close()
我們先導入PyPDF2
和os
庫。若未安裝PyPDF2
,可運行"cmd.exe",輸入"pip install PyPDF2",請注意PyPDF2有大小寫要求,不然無法安裝。