PyMuPDF转图片

文章讲述了由于API更新,一些在线教程中的PDF转图片代码出现错误,作者提供了修正后的代码示例,包括fitz.Matrix方法的使用和保存图片的调整。代码示例使用Python的fitz库进行PDF到图片的转换。
摘要由CSDN通过智能技术生成

应该是因为API更新,所以网上很多的教程都会报错。这里记录一下。

相关链接:https://blog.csdn.net/weixin_54537901/article/details/128126669

修正内容:

fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)-->fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)

page.getPixmap(matrix=trans, alpha=False)-->page.get_pixmap(matrix=trans, alpha=False)

pm.writePNG(pic_pwd)-->pm.save(pic_pwd)

PDF转图片的功能

import fitz
import os

# pdf路径
tmp = r"."

export_file = r"./output"

save_path = r"./output"
os.makedirs(export_file, exist_ok=True)
pdf_dir = [i for i in os.listdir(tmp) if os.path.splitext(i)[-1] == ".pdf"]

def pdf_to_jpg(name):
    # 拼接pdf的文件路径
    pwd_name = os.path.join(tmp, name)
    with fitz.open(pwd_name) as doc:
        # 将文件名同我们的保存路径拼接起来(保存图片的文件夹)
        dir_name = os.path.splitext(name)[0]
        pdf_name = os.path.join(export_file, dir_name)
        # print(pdf_name)
        temp = 0
        # (保存图片的文件夹)不存咋则生成
        # exsitsdir.judge(pdf_name)
        os.makedirs(pdf_name, exist_ok=True)
        for pg in range(doc.page_count):
            page = doc[pg]
            temp += 1
            rotate = int(0)
            # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
            zoom_x = 2.0
            zoom_y = 2.0
            trans = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate)
            pm = page.get_pixmap(matrix=trans, alpha=False)

            pic_name = '{}.jpg'.format(temp)
            # 拼接生成pdf的文件路径
            pic_pwd = os.path.join(pdf_name, pic_name)
            # print(pic_pwd)
            pm.save(pic_pwd)

def main():
    #多线程
    # pool = Pool(2)
    # for i in pdf_dir:
    #     res = pool.apply_async(pdf_to_jpg, (i,))
    # pool.close()
    # pool.join()
    #单线程
    for i in pdf_dir:
        pdf_to_jpg(i)

if __name__ == '__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值