import fitz  # PyMuPDF
import os

def convert_pdf_to_high_res_pymupdf(pdf_path, output_name, zoom=4):
    """
    使用 PyMuPDF 將 PDF 轉為高解析度圖片
    :param zoom: 縮放倍率。預設 4 倍 (約 300 DPI)。
                 設為 2 (約 150 DPI), 設為 8 (約 600 DPI)。
    """
    print(f"正在處理: {pdf_path} (Zoom: {zoom}x)...")
    
    try:
        doc = fitz.open(pdf_path)
        
        # 設定縮放矩陣 (Matrix)
        # 這是 PyMuPDF 控制解析度的關鍵
        mat = fitz.Matrix(zoom, zoom)

        for page_num in range(len(doc)):
            page = doc.load_page(page_num)
            
            # get_pixmap 時帶入矩陣，就會產生高解析度像素
            # alpha=False 代表不透明 (白色背景)，對 OCR 比較好
            pix = page.get_pixmap(matrix=mat, alpha=False)
            
            # 存檔
            save_path = f"{output_name}_page_{page_num+1}.png"
            pix.save(save_path)
            print(f"✅ 已儲存: {save_path} (尺寸: {pix.width}x{pix.height})")

        print("轉換完成！")
        doc.close()

    except Exception as e:
        print(f"❌ 錯誤: {e}")

# --- 執行 ---
# zoom=4 大約等於 300 DPI (推薦用於 OCR)
convert_pdf_to_high_res_pymupdf("pdf_cache2/holiday.pdf", "holiday", zoom=4)
