参考文章:python 获取文件夹中指定后缀/格式文件列表
参考文章:【PyMuPDF和pdf2image】Python将PDF转成图片
import datetime
import os
# PyMuPDF=1.21.1
import fitz
def get_filename_from_path(file_path):
# 加后后缀的pdf名称
filenameName_end_name = file_path.split("\\")[len(file_path.split("\\")) - 1]
# 去掉后缀的文件名
# print(filenameName_end_name)
filenameName = filenameName_end_name.split(".")[0]
return filenameName
# 根据后缀筛选文件
def getfile_by_end(file_path, fileEnd):
getfiles = []
sp = file_path
for root, dirs, files in os.walk(sp):
for file in files:
getfile = os.path.join(root, file)
if getfile.endswith(fileEnd):
getfiles.append(getfile)
return getfiles
def pdf2img(pdf_path, img_path):
pdfDoc = fitz.open(pdf_path)
for page in pdfDoc.pages():
# 将页面转换为图片
rotate = int(0)
# 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
# 此处若是不做设置,默认图片大小为:792X612, dpi=72
# pix = page.get_pixmap()
size_num = 2
zoom_x = size_num
zoom_y = size_num
# (1.33333333-->1056x816) (2-->1584x1224) (3-->3572x2526)
# x和y的值越大越清晰,图片越大,但处理也越耗时间,这里取决于你想要图片的清晰度
# 默认为1.333333,一般日常使用3就够了,不能设置太大,太大容易使电脑死机
mat = fitz.Matrix(zoom_x, zoom_y)
pix = page.get_pixmap(matrix=mat, dpi=None, colorspace='rgb', alpha=False)
# 去掉pdf后缀的文件名
imageName = get_filename_from_path(pdf_path) + "_" + str(page.number + 1)
target_img_name = img_path + '\\%s.png' % imageName # 构造图片名字
print('图片已生成:%s' % imageName)
# 保存图片
pix.save(target_img_name)
if __name__ == '__main__':
startTime_pdf2img = datetime.datetime.now() # 开始时间
# 文件夹路径
folder_path = r"D:\资料\海天\海天有机生抽500mL\外检报告"
# 批量转换文件夹中的pdf
# 筛选后缀为pdf的文件
files = getfile_by_end(folder_path, "pdf")
# 逐一转换每个pdf
for i in range(len(files)):
pdf_name = get_filename_from_path(files[i])
print('开始转换pdf文件:【%s】' % pdf_name)
img_path = folder_path + r"\\"
pdf_path = img_path + pdf_name + r".pdf"
pdf2img(pdf_path, img_path)
endTime_pdf2img = datetime.datetime.now() # 结束时间
print('===========END==========')
print('PDF转换图片累计耗时:【%s秒】' % (endTime_pdf2img - startTime_pdf2img).seconds)