import fitz  # PyMuPDF
import os

def pdf_to_hd_images(pdf_path, output_folder, dpi=300):
    """
    将 PDF 转换为高清图片。
    
    参数:
    - pdf_path: PDF 文件路径
    - output_folder: 输出图片的文件夹
    - dpi: 目标分辨率。
           72 = 屏幕预览 (低清)
           150 = 电子阅读 (中清)
           300 = 打印质量 (高清 - 推荐)
           600 = 超高清 (文件会很大)
    """
    
    # 1. 打开 PDF
    doc = fitz.open(pdf_path)
    
    # 确保输出文件夹存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
    
    print(f"正在转换 PDF: {pdf_path} (共 {len(doc)} 页)...")
    
    # 2. 计算缩放倍率 (Zoom Factor)
    # PDF 默认是 72 DPI。要达到 300 DPI，需要放大 300/72 倍
    zoom = dpi / 72.0
    mat = fitz.Matrix(zoom, zoom)
    
    for page_num, page in enumerate(doc):
        # 3. 获取页面图像 (Pixmap)
        # alpha=False 表示不需要透明通道 (如果不透明，背景通常为白/黑，取决于设置)
        # 生成 PNG 格式通常比 JPG 更清晰（无损）
        pix = page.get_pixmap(matrix=mat, alpha=False)
        
        output_filename = f"{output_folder}/page_{page_num + 1:03d}.png"
        
        # 4. 保存
        pix.save(output_filename)
        print(f"  - 已保存: {output_filename} (尺寸: {pix.w}x{pix.h})")

    print("转换完成！")

# --- 使用示例 ---
if __name__ == "__main__":
    # 修改这里的文件名
    pdf_file = "input10.pdf" 
    output_dir = "hd_images"
    
    # dpi=300 是打印级的清晰度，如果觉得不够清，可以设为 450 或 600
    pdf_to_hd_images(pdf_file, output_dir, dpi=300)