#!/usr/bin/env python3
"""
Split a PDF file into individual pages.

Usage:
    python scripts/split_pdf.py <input_pdf> [output_dir]

Example:
    python scripts/split_pdf.py documents/sample.pdf documents/sample_pages/
"""

import sys
from pathlib import Path

from pypdf import PdfReader, PdfWriter


def split_pdf(input_pdf: Path, output_dir: Path) -> None:
    """Split a PDF into individual pages."""
    # Create output directory
    output_dir.mkdir(parents=True, exist_ok=True)

    # Read the PDF
    reader = PdfReader(input_pdf)
    total_pages = len(reader.pages)

    print(f"Processing {input_pdf.name}")
    print(f"Total pages: {total_pages}")
    print(f"Output directory: {output_dir}")
    print()

    # Split into individual pages
    for page_num in range(total_pages):
        # Create a new PDF writer for this page
        writer = PdfWriter()
        writer.add_page(reader.pages[page_num])

        # Generate output filename (1-indexed for readability)
        output_file = output_dir / f"page_{page_num + 1:03d}.pdf"

        # Write the page
        with open(output_file, "wb") as f:
            writer.write(f)

        print(f"✓ Created {output_file.name}")

    print()
    print(f"Done! Split {total_pages} pages into {output_dir}")


def main():
    if len(sys.argv) < 2:
        print(__doc__)
        sys.exit(1)

    # Parse arguments
    input_pdf = Path(sys.argv[1])

    if not input_pdf.exists():
        print(f"Error: File not found: {input_pdf}")
        sys.exit(1)

    # Determine output directory
    if len(sys.argv) >= 3:
        output_dir = Path(sys.argv[2])
    else:
        # Default: create subdirectory based on PDF name
        output_dir = input_pdf.parent / f"{input_pdf.stem}_pages"

    # Split the PDF
    split_pdf(input_pdf, output_dir)


if __name__ == "__main__":
    main()
