这个代码的前提是安装了 PyMuPDF 库和相应的依赖项,以及正确安装了 fitz 模块。同时,需要提供有效的 PDF 文件路径和要存储图像文件的目录路径。在运行代码之前,请确保这些前提条件都已满足。
fitz 就是PyMuPDF库安装的包,若没有请打开cmd输入以下pip指令:
pip install PyMuPDF==1.18.14
代码使用的是1.18.14版本的PyMuPDF,最新版本的可能会报错。
若现存的版本不是1.18.14,可以使用如下指令卸载后重新安装对应版本:
pip uninstall PyMuPDF
在确保上述条件满足的情况下直接使用如下代码:
import datetime
import os # 文件库
import fitz # fitz就是安装的PyMuPDF包
def pdf_to_image(pdfPath, imagePath):
startTime = datetime.datetime.now() # 获取开始时间
pdfDoc = fitz.open(pdfPath) # 打开PDF文件
for pg in range(pdfDoc.pageCount): # 遍历每一页
page = pdfDoc[pg] # 获取当前页
rotate = int(0) # 设置旋转角度
# 设置缩放系数,这将为我们生成分辨率提高2.6的图像。
# 此处若是不做设置,默认图片大小为:792X612, dpi=96
# 这里的缩放系数为3,会生成更高分辨率的图像,但也会增加生成时间和文件大小。
zoom_x = 3 #数字越大越高清,default:1.3333333
zoom_y = 3
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) # 若不存在则创建
# 将图像写入指定的文件夹内,文件名为"images_页码.png"。
pix.writePNG(imagePath + '/' + 'images_%s.png' % pg)
endTime = datetime.datetime.now() # 获取结束时间
# 显示转换所使用的总耗时s
print('耗费时长=', (endTime - startTime).seconds)
if __name__ == "__main__":
# 1、PDF文件路径
pdfPath = 'C:/Users/柴宝/Desktop/Stacking回归模型融合演示文稿.pdf'
# 2、需要储存图像的目录路径
imagePath = 'C:/Users/柴宝/Desktop/新建文件夹'
pdf_to_image(pdfPath, imagePath) # 调用函数进行处理
在这个代码中需要注意以下几点:
- “pdfPath”和“imagePath”变量需要提供有效的路径
- fitz 模块需要正确安装,否则代码无法正常运行
- 转换大型 PDF 文件可能需要一定的时间和内存,因此要有足够的计算资源
- 在调用 pix.writePNG() 函数时,生成的文件名为 “images_页码.png”,其中页码是从 0 开始计数的
- 缩放系数 zoom_x 和 zoom_y 的值会影响输出图像的分辨率和大小,需要根据实际情况进行调整。在代码中,缩放系数设置为 3,会生成更高分辨率的图像,但也会增加生成时间和文件大小
- 在执行函数 pdf_to_image() 时,需要提供 PDF 文件路径和要存储图像的目录路径
注意以上几点可以确保代码的正确运行和输出想要的结果。