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 = 95def 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_filesexcept 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 Trueexcept Exception as e:print(f"? 轉換失敗: {str(e)}")return Falseif __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鍵退出...")