參考各路大神,弄了個
# -*- coding: utf-8 -*-
import sys, fitz
import os
import datetime
import re
def get_file_list(dir, file_type_list=['pdf','txt', 'csv', 'xlsx', 'xls'], file_list=[]):
'''獲取指定檔案夾下指定型別檔案路徑
:param dir: 檔案夾路徑
:param file_type_list: 檔案型別
:param file_list: 檔案串列 '''
for root, _, files in os.walk(dir):
for file in files:
file_type = file[file.rfind('.') + 1:]
if file_type in file_type_list:
file_list.append(os.path.join(root, file))
return file_list
def get_file_name(path_string):
"""獲取檔案名稱,不含后綴"""
pattern = re.compile(r'([^<>/\\\|:""\*\?]+)\.\w+$')
data = pattern.findall(path_string)
if data:
return data[0]
def pyMuPDF_fitz(file_dir_path, out_file_path,file_type_list=['pdf','txt', 'csv', 'xlsx', 'xls']):
startTime_pdf2img = datetime.datetime.now()#開始時間
if not os.path.exists(out_file_path):#判斷輸出檔案夾是否存在
os.makedirs(out_file_path) # 若不存在就創建
print("imagePath="+out_file_path)
file_paths = get_file_list(file_dir_path, file_type_list)#獲取檔案串列
n=0
t=0
for file in file_paths:
n=n+1
pdfDoc = fitz.open(file)
print("convert File="+file)
m=0
for pg in range(pdfDoc.pageCount):
page = pdfDoc[pg]
rotate = int(0)
# 每個尺寸的縮放系數為1.3,這將為我們生成解析度提高2.6的影像。
# 此處若是不做設定,默認圖片大小為:792X612, dpi=72
zoom_x =2# 1.33333333 #(1.33333333-->1056x816) (2-->1584x1224)
zoom_y =2# 1.33333333
mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
pix = page.getPixmap(matrix=mat, alpha=False)
pix.writePNG(out_file_path+'/'+get_file_name(file)+'_images_%s.png' % pg)#將圖片寫入指定的檔案夾內
m=m+1
t=t+1
print("convert File="+file,m,'pages finished.')
endTime_pdf2img = datetime.datetime.now()#結束時間
print('pdf2img時間=',(endTime_pdf2img - startTime_pdf2img).seconds,'秒, 共',n,'個檔案已轉換完成',t,'圖片。')
if __name__ == "__main__":
pdfPath = './forConvert'#相對路徑
imagePath = './path/image'
pyMuPDF_fitz(pdfPath,imagePath, ['pdf'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/196147.html
