import fitz # PyMuPDF
import os
from PIL import Image
def convert_pdf_to_bmp(pdf_path, output_folder):
"""
将单个PDF文件的每一页转换为BMP格式的图像。
:param pdf_path: PDF文件的路径。
:param output_folder: 保存BMP图像的输出文件夹路径。
"""
# 打开PDF文件
doc = fitz.open(pdf_path)
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 循环遍历每一页
for page_num in range(len(doc)):
# 获取页面
page = doc.load_page(page_num)
# 转换页面为图像
pix = page.get_pixmap(matrix=fitz.Matrix(300/72, 300/72)) # 设置分辨率,例如300 DPI
# 构建输出文件名
base_name = os.path.splitext(os.path.basename(pdf_path))[0]
output_filename = os.path.join(output_folder, f"{base_name}_page_{page_num+1}.bmp")
# 创建PIL Image对象以保存为BMP格式
img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
# 保存为BMP格式
img.save(output_filename, format="BMP")
# 关闭文档
doc.close()
def batch_convert_pdfs_to_bmp(input_folder, output_folder):
"""
批量将PDF文件夹中的所有PDF文件转换为BMP格式的图像。
:param input_folder: 包含PDF文件的输入文件夹路径。
:param output_folder: 保存BMP图像的输出文件夹路径。
"""
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 遍历输入文件夹中的所有文件
for filename in os.listdir(input_folder):
# 检查文件是否为PDF格式
if filename.endswith(".pdf"):
input_path = os.path.join(input_folder, filename)
# 使用PDF文件名作为子文件夹名称,以便组织输出图像
output_subfolder = os.path.join(output_folder, os.path.splitext(filename)[0])
convert_pdf_to_bmp(input_path, output_subfolder)
# 使用函数
input_folder = r"PDF" # 替换为你的PDF文件所在文件夹路径
output_folder = r"PDF_IMG" # 替换为你希望保存BMP图片的文件夹路径
batch_convert_pdfs_to_bmp(input_folder, output_folder)
pdf分割为bmp
最新推荐文章于 2024-07-23 08:30:44 发布