python 将pdf文件转图片

有小伙伴问了怎么将 pdf文件转图片的问题,我百度了一波儿,搞了以下python代码给他封装成exe工具了。

中途打包踩了个坑,python进程池的问题,本地运行没啥问题,打包好的exe文件双击就会使电脑内存爆破卡死,重新开机才好。

准备工作:

  1. 安装PyMuPDF 直接 pip install PyMuPDF 即可
  2. 在代码当前路径创建一个名为pdf_dir的文件夹,用于存放要转换的pdf 文件

以下是代码实现,支持批量转换,可以放多个pdf文件

python 复制代码
# -*- coding: UTF-8 -*-
import multiprocessing
from multiprocessing import Pool
# 安装fitz需要安装PyMuPDF才能使用
import fitz
import os
import time


tmp = 'pdf_dir'   #pdf路径

export_file = "导出文件"

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)
    print(pwd_name)
    doc = fitz.open(pwd_name)
    print(1111)
    # 将文件名同我们的保存路径拼接起来(保存图片的文件夹)
    dir_name = os.path.splitext(name)[0]
    pdf_name = os.path.join(export_file, dir_name)
    # print(pdf_name)
    temp = 0
    os.makedirs(pdf_name, exist_ok=True)
    for pg in range(doc.pageCount):
        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.getPixmap(matrix=trans, alpha=False)

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


def main():
    pool = Pool(10)
    for i in pdf_dir:
        res = pool.apply_async(pdf_to_jpg, (i,))
    pool.close()
    pool.join()


if __name__ == '__main__':
    # 如果要打包成exe供别人使用,要加上下面这行,不然会爆破电脑内存,导致电脑卡死
    multiprocessing.freeze_support()
    st = time.time()
    main()
    end_time = time.time()
    print('总用时:%s'%(end_time-st))

比如我们放了一个pytorch.pdf的文件,直接运行代码

直接就成功了

相关推荐
serve the people6 分钟前
tensorflow tf.nn.softmax 核心解析
人工智能·python·tensorflow
癫狂的兔子13 分钟前
【BUG】【Python】eval()报错
python·bug
啃火龙果的兔子14 分钟前
java语言基础
java·开发语言·python
masterqwer14 分钟前
day42打卡
python
不会飞的鲨鱼16 分钟前
抖音验证码滑动轨迹原理(很难审核通过)
javascript·python
我命由我1234517 分钟前
Python 开发问题:No Python interpreter configured for the project
开发语言·后端·python·学习·pycharm·学习方法·python3.11
多米Domi01126 分钟前
0x3f第12天 0-1背包
python·算法·leetcode·动态规划
电商API&Tina38 分钟前
跨境电商速卖通(AliExpress)数据采集与 API 接口接入全方案
大数据·开发语言·前端·数据库·人工智能·python
工业互联网专业1 小时前
基于python的旅游景点推荐系统_flask+spider
python·flask·毕业设计·源码·课程设计·spider·旅游景点推荐系统
编程乐学(Arfan开发工程师)1 小时前
信息收集与分析详解:渗透测试的侦察兵 (CISP-PTE 核心技能)
java·开发语言·javascript·python