from pdf2image import convert_from_path
import tempfile
import multiprocessing
import os
class PdfToImage():
"""
将pdf转换为图片
以原pdf名为文件夹名来存放该pdf转换后的图片
参数:pdf为存放原pdf的文件目录(绝对路径)
img为存放所有转换好的图片文件夹的文件夹
"""
def __init__(self, pdf, img):
"""
初始化pdf文件路径和存放图片路径
"""
self.pdf = pdf
self.img = img
def convers(self, fileName, outputDir):
"""
pdf转图片核心,自行学习pdf2image库
"""
with tempfile.TemporaryDirectory() as path:
images = convert_from_path(fileName, dpi=100, output_folder=outputDir, fmt='jpeg')
# pdf转换完成后,将该pdf文件删除
os.unlink(self.fileName)
def main(self):
"""主调度流程"""
# 创建进程池
pool = multiprocessing.Pool(processes = 4)
# 循环读取pdf文件夹内pdf文件
for fileName in os.listdir(self.pdf):
# 获取文件名
dirName = fileName[:-4]
# 将文件名拼接到要保存图片目录路径下
dirPath = os.path.join(self.img,dirName)
# 判断该文件目录是否已经存在,如果存在,将其删除
if os.path.exists(dirPath):
os.removedirs(dirPath)
# 在存放图片目录路径下新建以pdf名为名的文件夹,用来存放对应pdf转换得到的图片
os.mkdir(dirPath)
# 指定pdf转换后输出文件夹目录路径
outputDir = dirPath
# 要转换的pdf文件路径
fileName = self.pdf + '/' + fileName
# 调用进程池进行转换
pool.apply_async(self.convers, args=(fileName, outputDir))
# 关闭进程池,回收进程
pool.close()
pool.join()
# 存放pdf文件的目录(绝对路径)
# pdf = "/home/ubantu/Desktop/PDF"
# 要存放转换好的图片目录(绝对路径)
# img = "/home/ubantu/Desktop/IMAGES"
# pdftoimg = PdfToImage(pdf, img)
# pdftoimg.main()
PDF 转 图片 python3
最新推荐文章于 2024-09-10 20:06:25 发布