import fitz # PyMuPDF
from pathlib import Path
def pdf_to_jpg(pdf_path: str, output_folder: str, dpi: int = 300) -> list[str]:
"""
将 PDF 的每一页转换为 JPG 图片
参数:
pdf_path: PDF 文件路径
output_folder: 输出文件夹路径
dpi: 图像分辨率(默认 300,越高越清晰但文件越大)
返回:
生成的 JPG 文件路径列表
"""
# 打开 PDF 文件
pdf_document = fitz.open(pdf_path)
# 创建输出文件夹
output_dir = Path(output_folder)
output_dir.mkdir(parents=True, exist_ok=True)
# 获取 PDF 文件名(不含后缀)
pdf_name = Path(pdf_path).stem
output_files = []
print(f"开始转换: {pdf_path}")
print(f"共 {len(pdf_document)} 页")
# 遍历每一页
for page_num in range(len(pdf_document)):
page = pdf_document.load_page(page_num)
# 设置缩放比例 (DPI: 72 是 PDF 默认,300 是打印质量)
zoom = dpi / 72
matrix = fitz.Matrix(zoom, zoom)
# 渲染页面为图像
pix = page.get_pixmap(matrix=matrix, colorspace="RGB")
# 生成输出文件名,例如: document_001.jpg
output_path = output_dir / f"{pdf_name}_{page_num+1:03d}.jpg"
# 保存为 JPG
pix.save(str(output_path), "JPEG", jpg_quality=95)
output_files.append(str(output_path))
print(f"已保存: {output_path}")
pdf_document.close()
print(f"转换完成!共生成 {len(output_files)} 张图片")
return output_files
# 使用示例
if __name__ == "__main__":
pdf_path = "1.pdf"
output_folder = "output_images"
# 转换,使用 300 DPI
jpg_files = pdf_to_jpg(pdf_path, output_folder, dpi=300)
print("\n生成的文件:")
for file in jpg_files:
print(file)
PDF文件分割图片
发表评论