Python实现PDF转图片【一下解决不报错】

这个代码的前提是安装了 PyMuPDF 库和相应的依赖项,以及正确安装了 fitz 模块。同时,需要提供有效的 PDF 文件路径和要存储图像文件的目录路径。在运行代码之前,请确保这些前提条件都已满足。

fitz 就是PyMuPDF库安装的包,若没有请打开cmd输入以下pip指令:

pip install PyMuPDF==1.18.14

代码使用的是1.18.14版本的PyMuPDF,最新版本的可能会报错。 

若现存的版本不是1.18.14,可以使用如下指令卸载后重新安装对应版本: 

pip uninstall PyMuPDF

 在确保上述条件满足的情况下直接使用如下代码:

import datetime
import os # 文件库
import fitz  # fitz就是安装的PyMuPDF包


def pdf_to_image(pdfPath, imagePath):
    startTime = datetime.datetime.now()  # 获取开始时间
    pdfDoc = fitz.open(pdfPath)  # 打开PDF文件
    for pg in range(pdfDoc.pageCount):  # 遍历每一页
        page = pdfDoc[pg]  # 获取当前页
        rotate = int(0)  # 设置旋转角度
        # 设置缩放系数,这将为我们生成分辨率提高2.6的图像。
        # 此处若是不做设置,默认图片大小为:792X612, dpi=96
        # 这里的缩放系数为3,会生成更高分辨率的图像,但也会增加生成时间和文件大小。
        zoom_x = 3 #数字越大越高清,default:1.3333333
        zoom_y = 3
        mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)  # 创建矩阵,用于缩放和旋转图像
        pix = page.getPixmap(matrix=mat, alpha=False)  # 获取当前页的像素图像
        if not os.path.exists(imagePath):  # 判断存放图片的文件夹是否存在
            os.makedirs(imagePath)  # 若不存在则创建
        # 将图像写入指定的文件夹内,文件名为"images_页码.png"。
        pix.writePNG(imagePath + '/' + 'images_%s.png' % pg)
    endTime = datetime.datetime.now()  # 获取结束时间
    # 显示转换所使用的总耗时s
    print('耗费时长=', (endTime - startTime).seconds)


if __name__ == "__main__":
    # 1、PDF文件路径
    pdfPath = 'C:/Users/柴宝/Desktop/Stacking回归模型融合演示文稿.pdf'
    # 2、需要储存图像的目录路径
    imagePath = 'C:/Users/柴宝/Desktop/新建文件夹'
    pdf_to_image(pdfPath, imagePath)  # 调用函数进行处理

在这个代码中需要注意以下几点:

  • “pdfPath”和“imagePath”变量需要提供有效的路径

  • fitz 模块需要正确安装,否则代码无法正常运行

  • 转换大型 PDF 文件可能需要一定的时间和内存,因此要有足够的计算资源

  • 在调用 pix.writePNG() 函数时,生成的文件名为 “images_页码.png”,其中页码是从 0 开始计数的

  • 缩放系数 zoom_x 和 zoom_y 的值会影响输出图像的分辨率和大小,需要根据实际情况进行调整。在代码中,缩放系数设置为 3,会生成更高分辨率的图像,但也会增加生成时间和文件大小

  • 在执行函数 pdf_to_image() 时,需要提供 PDF 文件路径和要存储图像的目录路径

注意以上几点可以确保代码的正确运行和输出想要的结果。 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值