介绍
这篇博客目的主要是使用Python实现PDF文件转换成图片,以方便下游任务的进行。
开发包
-
fitz
-
PyMuPDF
在控制台依次执行以下命令:
pip install fitz
pip 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)
# 逐页读取PDF
for 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
文件同目录下创建
pdfs
和
images
文件夹。 -
将所有需要转换的PDF文件放入
pdfs
文件夹下。 -
运行
pdf2image.py
,等待运行完成即可。
代码如下:
import fitz
import os
def mkdir(path):
folder = os.path.exists(path)
if not folder: # 判断是否存在文件夹如果不存在则创建为文件夹
os.makedirs(path) # makedirs 创建文件时如果路径不存在会创建这个路径
else:
pass
def 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.name
name = name.replace('pdfs/', '').replace('.pdf', '')
# 逐页读取PDF
for 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)
版权声明:本文为Mr_TangGuo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。