python合併PDF

電腦上已經刪除了Adobe Acrobat,自己是編代碼的,儘量使用無版權問題的軟件。

PDF閱讀器以前使用Foxit Reader,也是要破解的。現在使用了SumatraPDF。但是忽然發現之前有合併PDF文件的需要,又不想打破這個版權問題。

想到能否用python編程的方式實現,自己是C程序員,對Python天然有一種自家的感覺(源代碼就是用C寫的)。

上網去搜索類似的文章,有好多,參考了一篇文章:https://www.jianshu.com/p/82485e3e46e1

利用了一個模塊PyPDF2,相關參考文檔網址爲:https://pythonhosted.org/PyPDF2/

拷貝代碼如下:

# -*- coding:utf-8*-
# 利用PyPDF2模塊合併同一文件夾下的所有PDF文件
# 只需修改存放PDF文件的文件夾變量:file_dir 和 輸出文件名變量: outfile

import os
from PyPDF2 import PdfFileReader, PdfFileWriter import time # 使用os模塊的walk函數,搜索出指定目錄下的全部PDF文件 # 獲取同一目錄下的所有PDF文件的絕對路徑 def getFileName(filedir): file_list = [os.path.join(root, filespath) \ for root, dirs, files in os.walk(filedir) \ for filespath in files \ if str(filespath).endswith('pdf') ] return file_list if file_list else [] # 合併同一目錄下的所有PDF文件 def MergePDF(filepath, outfile): output = PdfFileWriter() outputPages = 0 pdf_fileName = getFileName(filepath) if pdf_fileName: for pdf_file in pdf_fileName: print("路徑:%s"%pdf_file) # 讀取源PDF文件 input = PdfFileReader(open(pdf_file, "rb")) # 獲得源PDF文件中頁面總數 pageCount = input.getNumPages() outputPages += pageCount print("頁數:%d"%pageCount) # 分別將page添加到輸出output中 for iPage in range(pageCount): output.addPage(input.getPage(iPage)) print("合併後的總頁數:%d."%outputPages) # 寫入到目標PDF文件 outputStream = open(os.path.join(filepath, outfile), "wb") output.write(outputStream) outputStream.close() print("PDF文件合併完成!") else: print("沒有可以合併的PDF文件!") # 主函數 def main(): time1 = time.time() file_dir = r'd:\downloads\pdf\' # 存放PDF的原文件夾 outfile = "merge.pdf" # 輸出的PDF文件的名稱 MergePDF(file_dir, outfile) time2 = time.time() print('總共耗時:%s s.' %(time2 - time1)) main()

自己修改了一下路徑d:\downloads\pdf,和文件名merge.pdf。
成功解決。
不過想了一下,使用上有些限制,需要這個文件夾下僅有要合併的PDF文件,其他不想合併的PDF移走。
進一步的工作,是添加一個GUI,可以選擇文件之類的,修改需要輸出的文件名什麼的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章