一、背景
wps需要会员才能将pdf转成图片,对于白嫖党来说是多不友好啊!网上扒拉了一下有实现的代码和方法,但是copy后都是各种运行报错,作者通过整理调试总结出此文章,希望对各位白嫖党有帮助。
二、准备
wind11,python3.12
poppler
下载地址:https://github.com/oschwartz10612/poppler-windows/releases/
poppler后解压,放在项目resource文件下否则到处放找的时候麻烦
pip install pdf2image
三、项目结构
四、代码
#!/usr/bin/env python
# coding=utf-8
"""
@file: pdf2images.py
@Author: zhangshaohua
@date: 2024/7/11 17:48
@desc: pdf转图片
"""
import os
import pdf2image
def pdf_to_images(pdf_folder, images_folder):
# 检查PDF文件是否存在
if not os.path.exists(pdf_folder):
print(f"错误:文件 {pdf_folder} 不存在。")
return
# 检查目标文件夹是否存在,如果不存在则创建
if not os.path.exists(images_folder):
os.makedirs(images_folder)
# 遍历PDF文件夹中的每个文件
for pdf_file in os.listdir(pdf_folder):
if pdf_file.endswith('.pdf'):
# 完整的PDF文件路径
full_pdf_path = os.path.join(pdf_folder, pdf_file)
# 生成对应的图像文件夹路径
image_subfolder = os.path.join(images_folder, os.path.splitext(pdf_file)[0])
# 检查图像文件夹是否存在,如果不存在则创建
if not os.path.exists(image_subfolder):
os.makedirs(image_subfolder)
# 使用pdf2image将PDF转换为图像
images = pdf2image.convert_from_path(full_pdf_path,poppler_path=r'resource/poppler-24.02.0/Library/bin')
# 保存图像
for i, image in enumerate(images):
image_filename = f"page_{i + 1}.png"
image_path = os.path.join(image_subfolder, image_filename)
image.save(image_path)
print(f"PDF文件 {pdf_file} 已成功转换为图像,并保存在 {image_subfolder} 文件夹中。")
else:
print(f"跳过非PDF文件:{pdf_file}")
pdf_folder = 'pdfs'
images_folder = 'images'
pdf_to_images(pdf_folder, images_folder)
pdf_folder: pdf文件存放路径,需要手动创建并存放pdf文件,如果没有pdf文件则报错,支持多个pdf文件转换速度取决于pdf文件大小
images_folder:图片保存的路径,如果不存在会自动创建
poppler_path: poppler存放路径,一定要指定否则报错