#!/usr/bin/env python3
"""
删除PDF指定页面
"""

import sys
from pathlib import Path

try:
    import fitz  # PyMuPDF
except ImportError:
    print("错误: 需要安装PyMuPDF库")
    print("请运行: pip install PyMuPDF")
    sys.exit(1)

def remove_page(input_pdf, output_pdf, page_number):
    """
    删除PDF的指定页面
    
    Args:
        input_pdf: 输入PDF路径
        output_pdf: 输出PDF路径
        page_number: 要删除的页码（从1开始）
    
    Returns:
        bool: 是否成功
    """
    try:
        doc = fitz.open(input_pdf)
        total_pages = len(doc)
        
        if page_number < 1 or page_number > total_pages:
            print(f"错误: 页码 {page_number} 超出范围 (1-{total_pages})")
            return False
        
        # 删除指定页面（PyMuPDF使用0-based索引）
        doc.delete_page(page_number - 1)
        
        # 保存
        doc.save(output_pdf)
        doc.close()
        
        print(f"成功: 删除第 {page_number} 页，剩余 {total_pages - 1} 页")
        return True
        
    except Exception as e:
        print(f"错误: {e}")
        return False

def remove_pages(input_pdf, output_pdf, page_numbers):
    """
    删除PDF的多个页面
    
    Args:
        input_pdf: 输入PDF路径
        output_pdf: 输出PDF路径
        page_numbers: 要删除的页码列表（从1开始）
    
    Returns:
        bool: 是否成功
    """
    try:
        doc = fitz.open(input_pdf)
        total_pages = len(doc)
        
        # 验证页码
        for page_num in page_numbers:
            if page_num < 1 or page_num > total_pages:
                print(f"错误: 页码 {page_num} 超出范围 (1-{total_pages})")
                return False
        
        # 按降序删除（避免索引变化）
        for page_num in sorted(page_numbers, reverse=True):
            doc.delete_page(page_num - 1)
        
        # 保存
        doc.save(output_pdf)
        doc.close()
        
        print(f"成功: 删除 {len(page_numbers)} 页，剩余 {total_pages - len(page_numbers)} 页")
        return True
        
    except Exception as e:
        print(f"错误: {e}")
        return False

if __name__ == '__main__':
    if len(sys.argv) < 4:
        print("用法: python remove_pdf_page.py <输入PDF> <输出PDF> <页码1> [页码2] [页码3] ...")
        print("示例: python remove_pdf_page.py input.pdf output.pdf 4")
        print("示例: python remove_pdf_page.py input.pdf output.pdf 3 4 5")
        sys.exit(1)
    
    input_pdf = sys.argv[1]
    output_pdf = sys.argv[2]
    page_numbers = [int(p) for p in sys.argv[3:]]
    
    if not Path(input_pdf).exists():
        print(f"错误: 输入文件不存在: {input_pdf}")
        sys.exit(1)
    
    if len(page_numbers) == 1:
        success = remove_page(input_pdf, output_pdf, page_numbers[0])
    else:
        success = remove_pages(input_pdf, output_pdf, page_numbers)
    
    sys.exit(0 if success else 1)
