脚本:PDF文件批量转换成图片(python3)

文章目录

语言

语言:python 3

用法

用法:选择PDF文件所在的目录,点击 确定 后,自动将该目录下的所有PDF转换成单个图片,图片名称为: pdf文件名.page_序号.jpg

如运行中报错,需要自行根据报错内容安装缺失的库

例如:

python 复制代码
#安装库
pip install pyautogui
 
#安装库
pip install  pillow

提供两种源码

源码1

第一种是在代码中手动添加pdf所在目录

python 复制代码
import os
import glob
from PyPDF2 import PdfReader
from pdf2image import convert_from_path
 
pdf_dir = "path/to/pdf_dir/"  #pdf目录
 
# 遍历目录中的PDF文件
pdf_files = glob.glob(os.path.join(pdf_dir, "*.pdf"))
 
# 遍历每个PDF文件,并将其转换为图片
for pdf_file in pdf_files:
    # 创建PdfReader对象
    pdf = open(pdf_file, 'rb')
    pdf_reader = PdfReader(pdf)
    
    # 遍历PDF的页面并将其转换为图片
    for page_num in range(len(pdf_reader.pages)):
        # 获取页面对象
        page = pdf_reader.pages[page_num]
 
        # 将PDF页面转换为图像
        images = convert_from_path(pdf_file, first_page=page_num+1, last_page=page_num+1)
 
        # 定义图像保存路径
        filename = os.path.splitext(os.path.basename(pdf_file))[0]
        image_path = os.path.join(pdf_dir, f"{filename}_page_{page_num+1}.jpg")
 
        # 保存图像
        for i, image in enumerate(images):
            if i == 0:
                image.save(image_path, "JPEG")
            else:
                image_path = os.path.join(pdf_dir, f"{filename}_page_{page_num+1}_{i+1}.jpg")
                image.save(image_path, "JPEG")
 
    # 关闭PDF文件
    pdf.close()

源码2

第二种是点击运行后,弹出窗口选择PDF所在文件夹,程序运行对该文件夹下的所有PDF文件转换成图片

python 复制代码
#手动选择目录下的pdf文件
import os
from tkinter import Tk
from tkinter.filedialog import askdirectory
from PyPDF2 import PdfReader
from pdf2image import convert_from_path
 
# 打开选择目录的对话框
Tk().withdraw()  # 隐藏Tkinter根窗口
pdf_dir = askdirectory(title="选择PDF所在目录")
 
# 遍历目录中的PDF文件
pdf_files = [f for f in os.listdir(pdf_dir) if f.endswith(".pdf")]
 
# 遍历每个PDF文件,并将其转换为图片
for pdf_file in pdf_files:
    # 创建PdfReader对象
    pdf_path = os.path.join(pdf_dir, pdf_file)
    pdf = open(pdf_path, 'rb')
    pdf_reader = PdfReader(pdf)
    
    # 遍历PDF的页面并将其转换为图片
    for page_num in range(len(pdf_reader.pages)):
        # 获取页面对象
        page = pdf_reader.pages[page_num]
 
        # 将PDF页面转换为图像
        images = convert_from_path(pdf_path, first_page=page_num+1, last_page=page_num+1)
 
        # 定义图像保存路径
        filename = os.path.splitext(pdf_file)[0]
        image_path = os.path.join(pdf_dir, f"{filename}_page_{page_num+1}.jpg")
 
        # 保存图像
        for i, image in enumerate(images):
            if i == 0:
                image.save(image_path, "JPEG")
            else:
                image_path = os.path.join(pdf_dir, f"{filename}_page_{page_num+1}_{i+1}.jpg")
                image.save(image_path, "JPEG")
 
    # 关闭PDF文件
    pdf.close()
相关推荐
bitbrowser1 天前
Telegram提示尝试次数过多,换网络和重装有用吗
前端
研☆香1 天前
前端简单的的变量声明
前端
赵大仁1 天前
Next.js AI Route Handler 工程化:超时、流式与鉴权
前端·ai·鉴权·next.js·工程化
winfredzhang1 天前
从零构建家庭照片管理系统:Django 模块化单体实战,以及我踩到的 4 个真实坑
python·postgresql·django·sqlite·bootsrap
jyOverQ1 天前
LangGraph 流式执行详解:stream、astream 与 stream_mode 怎么选?
python·langchain
闲猫1 天前
LangGraph / Capabilities / Stores
python·agent·langgraph
yuhaiqiang1 天前
从这两件事就能看出 vibecoding 距离专业作品差距有多大?AI 能抹平技术,但抹不平品味 !
前端·后端·程序员
一次旅行1 天前
DeepSeek‑V4‑Flash‑Vision‑Exp 小白入门实战|3种传图方式、完整可跑代码、避坑排障
java·前端·人工智能
pjj198541 天前
机器学习-NumPy2
人工智能·python·机器学习
OPEN-F1 天前
Python进阶教程:单元测试与代码质量
开发语言·python·单元测试