侧边栏壁纸
博主头像
Tool博主等级

行动起来,活在当下

  • 累计撰写 27 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

源码6.将PDF文件转存为图片

Jimmie
2024-01-27 / 0 评论 / 0 点赞 / 8 阅读 / 3622 字
温馨提示:
收藏保存网址不迷路:www.jimmie.top,若内容或图片失效,请反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

在这篇技术博客中,我们将详细介绍如何使用Python将PDF文件转换成图片。这个功能在处理扫描文档或者需要将PDF内容以图像形式展示的场景中非常有用。我们将使用fitz库(也就是PyMuPDF),以及globos模块来实现这个功能。


📝 准备工作

首先,确保你已经安装了fitz库(PyMuPDF)。如果没有安装,可以通过以下命令来安装:

pip install PyMuPDF

安装完成之后,我们就可以开始编写代码了。


🚀 代码解析

以下是我们的脚本,我们将逐步解释每个部分的作用:

# filename: 6.将PDF文件转存为图片.py
print("PDF转图片开始运行!")
print("本软件由微信 Jimmie_ok 提供,如有问题请联系微信! 可定制开发指定功能软件!")

# 导入所需模块
import fitz  # PyMuPDF库,用于处理PDF文件和图片转换
import glob  # 用于查找符合特定规则的文件路径名
import os    # 用于处理文件和目录

# 获取当前工作目录的路径
work_path = os.getcwd()
# 定义存放生成的图片的文件夹路径
image_path = work_path + "\\images\\"
# 从用户处获取PDF文件所在的路径
PDF_path = input("请输入PDF文件所在的路径:")

# 使用glob模块获取指定路径下的所有pdf文件的文件名
PDFfiles = glob.glob(PDF_path + "\\*.pdf")

# 遍历所有PDF文件
for PDFfile in PDFfiles:
    # 使用fitz模块打开PDF文件
    PDFdoc = fitz.open(PDFfile)
    # 遍历PDF文件的每一页
    for pg in range(PDFdoc.pageCount):
        # 从PDF文件名中提取出文件名(不包含扩展名),用作新建的文件夹名
        folder_name = PDFfile.split("\\")[-1].split(".")[0]
        # 获取当前页
        page = PDFdoc[pg]
        # 设置旋转角度,这里设为0,即不旋转
        rotate = int(0)
        # 设置图片相对于PDF文件在X轴和Y轴上的缩放比例,这里设为3
        zoom_x = 3
        zoom_y = 3
        # 创建一个Matrix对象,用于后续的图片生成
        mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
        # 获取当前页的Pixmap对象,这是生成图片的关键步骤
        pix = page.getPixmap(matrix=mat, alpha=False)
        # 检查目标文件夹是否存在,如果不存在则创建
        if not os.path.exists(image_path + folder_name):
            os.makedirs(image_path + folder_name)
        # 将Pixmap对象保存为PNG格式的图片,图片名为页码
        pix.writePNG(image_path + folder_name + "\\{}.png".format(str(pg + 1)))

# 所有PDF文件处理完毕,打印完成信息
print("转换完成!")
print("转换后的图片保存在以下文件夹内:")
print(image_path)

📂 文件和目录处理

我们首先导入必要的模块,并获取当前工作目录的路径。接着,我们定义了一个用于存放生成的图片的文件夹路径,并通过用户输入获取PDF文件所在的路径。

🔍 找到所有PDF

使用glob库,我们可以轻松地找到给定路径下的所有PDF文件。

🔄 遍历和转换

对于每个找到的PDF文件,我们使用fitz.open来打开它。然后,我们遍历每一页,创建一个fitz.Matrix对象来定义图片的缩放比例和旋转角度,并使用getPixmap方法将每一页转换成一个图片。

📁 文件夹管理

在保存图片之前,我们检查是否已经存在一个以PDF文件名命名的文件夹,如果不存在,我们就创建一个。这样做可以确保我们的输出有序且易于管理。

🖼️ 保存图片

最后,我们使用writePNG方法将转换得到的图片以PNG格式保存到相应的文件夹中。


🎉 完成打印

脚本运行结束后,我们会打印出完成信息,并告知用户图片保存的位置。


通过以上步骤,我们就可以轻松地将PDF文件转换为图片了。这个脚本可以处理多页PDF文件,并且会为每个PDF文件创建一个单独的文件夹来存放输出的图片。

以上代码有疑问的可以联系作者一起交流学习

jimmie.webp

  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
  3. QQ打赏

    qrcode qq
博主关闭了所有页面的评论