背景
由於工作原因,經常需要將多個pdf檔案合併後列印,有時候上網找免費合併工具比較麻煩(公司內網不能訪問公網),於是決定搞個小工具。
具體實現需要安裝 PyPDF2
pip install PyPDF2
程式碼
# -*- coding=utf-8 -*-"""功能: 將當前目錄下的所有pdf檔案合併為一個檔案,新檔案命名為 all_merge_年月日_時分秒.pdf被合併的pdf檔案不包含 all_merge 開頭的檔案"""import PyPDF2import pathlibimport datetimedef do_merge(the_dir): prefix = 'all_merge' output_file = '%s_%s.pdf' % (prefix, datetime.datetime.now().strftime('%Y%m%d_%H%M%S')) pdf_files = [] path_dir = pathlib.Path(the_dir) for filename in path_dir.iterdir(): if not filename.is_file(): continue if filename.name[0:len(prefix)] == prefix: continue elif filename.name.endswith('.pdf'): pdf_files.append(filename.name) pdf_files.sort(key=str.lower) pdf_writer = PyPDF2.PdfFileWriter() print("find %d pdf file(s)." % len(pdf_files)) idx = 0 for f in pdf_files: idx += 1 print("%d: %s" % (idx, f)) pdf_obj = open(f, 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_obj) for page_num in range(0, pdf_reader.numPages): page_obj = pdf_reader.getPage(page_num) pdf_writer.addPage(page_obj) pdf_output = open(output_file, 'wb') pdf_writer.write(pdf_output) pdf_output.close() print("merge file:[ %s ]" % output_file) input("Press any key to exit.")if __name__ == "__main__": do_merge(".")
效果