Python提取PDF第一页为封面图片【批量提取】
近期要处理一批PDF文件,大约在20G,具体数量不详,需求是把每个文件的页数和第一页转换成图片,在网上查阅各种类库,最终选择的是PyMuPDF模块。最后核心代码量较少,功能实现效果也比较好。
一、安装扩展类
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)
三、说明
1、使用input输入路径
2、生成图片存户路径同存放路径
3、生成图片为PNG格式
4、支持自定义截取页数,建议为第一页
5、已生成exe文件,百度网盘:
链接:https://pan.baidu.com/s/1zfi18y7-vMpg9Mk_wPu9Hg
提取码:5ajb