• 周日. 2月 5th, 2023

使用python将PDF批量转换图片的几种方法

城主

12月 28, 2021

日常工作中,使用python可以快速将PDF转换成图片,掌握了这个通过python快速转换PDF为图片的方法能在很高程度上提高工作效率。魔比之城与大家一起看一下怎样通过python快速转换PDF成图片。
方法1:PyMuPDF(成功)
①、安装PyMuPDF:

模块地址:

pip install PyMuPDF

②、转换图片代码:

import datetime
import os

import fitz  # fitz就是pip install PyMuPDF


def pyMuPDF_fitz(pdfPath, imagePath):
    startTime_pdf2img = datetime.datetime.now()  # 开始时间

    print("imagePath=" + imagePath)
    pdfDoc = fitz.open(pdfPath)
    for pg in range(pdfDoc.pageCount):
        page = pdfDoc[pg]
        rotate = int(0)
        # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
        # 此处若是不做设置,默认图片大小为:792X612, dpi=96
        zoom_x = 1.33333333  # (1.33333333-->1056x816)   (2-->1584x1224)
        zoom_y = 1.33333333
        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)  # 若图片文件夹不存在就创建

        pix.writePNG(imagePath + '/' + 'images_%s.png' % pg)  # 将图片写入指定的文件夹内

    endTime_pdf2img = datetime.datetime.now()  # 结束时间
    print('pdf2img时间=', (endTime_pdf2img - startTime_pdf2img).seconds)


if __name__ == "__main__":
    # 1、PDF地址
    pdfPath = 'demo1.pdf'
    # 2、需要储存图片的目录
    imagePath = './imgs'
    pyMuPDF_fitz(pdfPath, imagePath)

使用时,只需要更改PDF地址和储存图片地址即可。
方法2:pdf2image(未成功)
①、安装pdf2image

模块地址:

pip install pdf2image

阅读  python 代码性能分析与优化方法

②、安装Poppler:

解压之后放到自己的软件盘,然后把bin目录添加到系统环境变量。然后重启电脑。

方法3、wind(已经成功)

这个我昨天试了很久,一直报错,今天看到一个文章,赶紧是却少一个软件Ghostscript,但是下载又好慢呀,不知道什么鬼。
好像有个这个软件Ghostscript:

Ghostscript 下载地址

打算按着这个文章,再次测试:

可以用第三方库wand实,需要安装wand 、imagemagick和ghostscript。作者都成功了,那我就再试试吧。
①、安装wind

模块地址

pip install Wand

②、安装imagemagick

下载地址:

安装过程注意勾选Install development headers and libraries for C and C++ 。安装后设置MAGICK_HOME环境变量,值为imagemagick的安装路径,并将安装路径加入path。

详情可参照此页面网页链接。
③、安装ghostscript

方法4、imagemagick+ghostscript(已经成功)

这个还是我看到一篇博客:
之后,然后第三个方法也成功了,然后测试这个也成功了,具体步骤:
这些软件可以直接去我的云盘下载,如果失效自己就官网下载吧:

①、安装imagemagick

安装过程注意勾选Install development headers and libraries for C and C++ 。安装后设置MAGICK_HOME环境变量,值为imagemagick的安装路径,并将安装路径加入path。

可以将PDF转为图片的代码:

import os



def os_magick(pdf_path,img_dir,file_name):
    os.system(r'magick  {} {}/{}.jpg'.format(pdf_path,img_dir,file_name))


if __name__ == '__main__':

    pdf_path = r"demo1.pdf"
    img_dir = r'imgs3'
    # 图片名字的前缀
    file_name = 'demo'
    os_magick(pdf_path,img_dir,file_name)

注意点:

pdf_path 和img_dir 必须填写绝对路径地址(我这里我前面地址删除了,看懂就好)文件名的前缀可以自己定义如果数量过多,并且需要储存的文件夹不同,可以自动创建目录,不过最后出入函数的还是绝对路径。