1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python实现PDF文件转图片(PNG JPEG等格式)

Python实现PDF文件转图片(PNG JPEG等格式)

时间:2021-09-02 20:54:13

相关推荐

Python实现PDF文件转图片(PNG JPEG等格式)

介绍

这篇博客目的主要是使用Python实现PDF文件转换成图片,以方便下游任务的进行。

开发包

fitzPyMuPDF

在控制台依次执行以下命令:

pip install fitzpip install PyMuPDF

详细代码

参数说明:

pdfPath:pdf文件的路径imgPath:图像要保存的文件夹zoom_x:x方向的缩放系数zoom_y:y方向的缩放系数rotation_angle:旋转角度

def pdf_image(pdfPath, imgPath, zoom_x, zoom_y, rotation_angle):# 打开PDF文件pdf = fitz.open(pdfPath)# 逐页读取PDFfor pg in range(0, pdf.pageCount):page = pdf[pg]# 设置缩放和旋转系数trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)pm = page.getPixmap(matrix=trans, alpha=False)# 开始写图像pm.writePNG(imgPath + str(pg) + ".png")pdf.close()pdf_image(r"01.pdf", r"images/", 10, 10, 0)

运行以上代码,最终将会以PDF文件的页码为单位生成图片。

图片格式

如果你想自己选择最终的图片格式,只需要修改以下代码:

pm.writePNG(imgPath + str(pg) + ".png")

.png修改为你期望的图片格式,比如.jpg等即可

批量转换PDF文件

步骤说明:

新建pdf2image.py文件并将以下代码复制并保存。在与pdf2image.py文件同目录下创建pdfsimages文件夹。将所有需要转换的PDF文件放入pdfs文件夹下。运行pdf2image.py,等待运行完成即可。

代码如下:

import fitzimport osdef mkdir(path):folder = os.path.exists(path)if not folder: # 判断是否存在文件夹如果不存在则创建为文件夹os.makedirs(path) # makedirs 创建文件时如果路径不存在会创建这个路径else:passdef pdf_image(pdfPath, imgPath, zoom_x, zoom_y, rotation_angle):""":param pdfPath: pdf文件的路径:param imgPath: 图像要保存的文件夹:param zoom_x: x方向的缩放系数:param zoom_y: y方向的缩放系数:param rotation_angle: 旋转角度:return: None"""# 打开PDF文件pdf = fitz.open(pdfPath)name = pdf.namename = name.replace('pdfs/', '').replace('.pdf', '')# 逐页读取PDFfor pg in range(0, pdf.pageCount):page = pdf[pg]# 设置缩放和旋转系数trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)pm = page.getPixmap(matrix=trans, alpha=False)# 开始写图像mkdir(imgPath + name)pm.writePNG(imgPath + name + '/' + str(pg + 1) + ".png")pdf.close()# pdf_image(r"pdfs/01.pdf", r"images/", 10, 10, 0)file_dir = r'pdfs/'file_list = []for items in os.walk(file_dir, topdown=False):file_list = items[2]print(file_list)for file in file_list:head = 'pdfs/'pdf_image(head + file, r"images/", 5, 5, 0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。