一:步驟
1、使用input輸入路徑
2、生成圖片存戶路徑同存放路徑
3、生成圖片為PNG格式
4、支持自定義截取頁數,建議為第一頁
二:安裝擴展類
pip install PyMuPDF
三:示例代碼
# coding:utf-8 import os import fitz # 解析 def analysis(file_path, save_path, num): # 資源列表 file_array = [] if os.path.isdir(file_path): # 目錄循環壓入 file_count = get_path_file(file_path) for v in file_count: file_array.append(v) else: # 單文件,單次調用 file_array.append(file_path) # 判斷為空情況 if not file_array: print("此目錄下無文件") # 執行解析 file_count_num = len(file_array) print("程序運行中,共計%s個文件" % file_count_num) for v in file_array: # print("文件路徑:%s" % v) # 獲取文件名稱及類型 file_name = os.path.basename(v) # print("文件信息:%s" % file_name) if '.pdf' not in file_name: print("此文件非PDF文件") # 打開PDF文件,生成一個對象 doc = fitz.open(v) # 總頁數 count_page = doc.pageCount # print("文件共計:%s頁" % count_page) if count_page > 1: page = doc[num] rotate = int(0) # 每個尺寸的縮放系數為2,這將為我們生成分辨率提高四倍的圖像。 zoom_x = 2.0 zoom_y = 2.0 trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate) pm = page.getPixmap(matrix=trans, alpha=False) # 保存路徑 p_1 = v.replace(file_path, save_path) p_2 = p_1.replace(file_name, '') if not os.path.exists(p_2): os.makedirs(p_2) new_file_name = file_name.replace(".pdf", "") pm.writePNG(p_2 + '%s.png' % new_file_name) print("運行完成") else: print("此文檔無內容,跳出") continue # 返回目錄下所有文件 def get_path_file(files_path): data = [] for root, dirs, files in os.walk(files_path, topdown=False): for name in files: f_p = os.path.join(root, name).replace("\\", "/") data.append(f_p) return data if __name__ == '__main__': print("|---------------------------------|") print("| |") print("| PDF 批量生成封面 |") print("| |") print("|---------------------------------|") # 當前目錄下的文件 now_path = os.getcwd() print("當前位置:%s" % now_path) # 保存路徑 print("請輸入參數,以 / 結尾,處理完成后會自動退出") save_path = input("圖片保存地址:") exit() # 判斷目錄 save_path_status = os.path.exists(save_path) if not save_path_status: os.mkdir(save_path) # 截取頁數 num = 0 # 路徑或文件名 file_path = input("PDF文件地址:") # 調用方法 analysis(file_path, save_path, num)
注:可打包成exe文件使用噢
本文轉載於:https://cloud.tencent.com/developer/article/1584421