批量转换文件夹中的pdf为png图片

参考文章: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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆百亿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值