pdf转图片(png,jpg)的python脚本

发布于:2025-06-26 ⋅ 阅读:(21) ⋅ 点赞:(0)

pdf转图片(png,jpg)的python脚本

PDF转图片工具

1.安装库 pip install pymupdf

2.如果需要pdf转jpg的更改DEFAULT_FORMAT即可

3.一定注意要将脚本与待转化的.pdf文件放在同一个目录

4.运行脚本,将脚本所在目录所有.pdf文件转换成图片,并存放在对应名称的文件夹中

import os
import sys
import fitz
import time
from typing import List

# 配置项
DEFAULT_ZOOM = 2.0
SUPPORTED_FORMATS = ['png', 'jpg']
DEFAULT_FORMAT = 'png'
JPEG_QUALITY = 95

def get_script_dir() -> str:
    """获取脚本所在的绝对目录路径"""
    return os.path.dirname(os.path.abspath(__file__))

def get_pdf_files() -> List[str]:
    """获取脚本目录下的PDF文件(返回完整路径)"""
    script_dir = get_script_dir()
    pdf_files = []
    try:
        for filename in os.listdir(script_dir):
            if filename.lower().endswith('.pdf'):
                full_path = os.path.join(script_dir, filename)
                if os.path.isfile(full_path):
                    pdf_files.append(full_path)
        return pdf_files
    except Exception as e:
        print(f"[ERROR] 扫描PDF失败: {str(e)}")
        return []

def convert_pdf_to_images(
    pdf_path: str,
    output_format: str = DEFAULT_FORMAT,
    zoom: float = DEFAULT_ZOOM
) -> bool:
    """转换PDF为图片(输出到脚本所在目录)"""
    try:
        script_dir = get_script_dir()
        pdf_name = os.path.splitext(os.path.basename(pdf_path))[0]
        
        # 在脚本目录下创建输出文件夹
        output_folder = os.path.join(script_dir, f"{pdf_name}_images")
        os.makedirs(output_folder, exist_ok=True)
        
        doc = fitz.open(pdf_path)
        total_pages = len(doc)
        
        print(f"\n转换中: {os.path.basename(pdf_path)} (共{total_pages}页)")
        print(f"输出到: {output_folder}")
        
        for pg in range(total_pages):
            page = doc[pg]
            pix = page.get_pixmap(matrix=fitz.Matrix(zoom, zoom))
            
            output_path = os.path.join(
                output_folder,
                f"{pdf_name}_page{pg+1:03d}.{output_format}"
            )
            
            pix.save(output_path, jpg_quality=JPEG_QUALITY if output_format == 'jpg' else None)
            print(f"  ✓ 第 {pg+1}/{total_pages} 页")
        
        doc.close()
        print(f"✔ 转换完成!")
        return True
        
    except Exception as e:
        print(f"✕ 转换失败: {str(e)}")
        return False

if __name__ == '__main__':
    print("="*50)
    print("PDF转图片工具(输出到脚本目录版)")
    print("="*50)
    
    pdf_files = get_pdf_files()
    if not pdf_files:
        print("\n! 未找到PDF文件!请确保:")
        print("  1. PDF文件与脚本在同一目录")
        print("  2. 文件扩展名是.pdf")
        input("\n按Enter键退出...")
        sys.exit()
    
    print("\n找到以下PDF文件:")
    for i, pdf in enumerate(pdf_files, 1):
        print(f"  {i}. {os.path.basename(pdf)}")
    
    input("\n按Enter键开始转换...")
    
    for pdf in pdf_files:
        convert_pdf_to_images(pdf)
    
    input("\n全部完成!按Enter键退出...")


网站公告

今日签到

点亮在社区的每一天
去签到