#!/usr/bin/env python3
"""
PDF 轉 EPUB（分批版，每章合併）
"""
import fitz
from ebooklib import epub
from PIL import Image
import os

PDF_PATH = os.path.expanduser("~/.openclaw/media/inbound/行動中的組織---784ef0bf-9749-4e08-a1ab-4d99b2a8725a.pdf")
OUTPUT_PATH = os.path.expanduser("~/Desktop/行動中的組織.epub")

doc = fitz.open(PDF_PATH)
total_pages = len(doc)
print(f"📊 {total_pages} 頁，分批轉換...")

book = epub.EpubBook()
book.set_identifier("thompson-oia-zh-2026-v3")
book.set_title("行動中的組織")
book.set_language("zh")
book.add_author("James D. Thompson")

style = epub.EpubItem(uid="s", file_name="style/default.css", media_type="text/css",
    content="body{margin:0;padding:10px;text-align:center}img{max-width:100%;height:auto}.chapter{margin-bottom:20px}")

# 每 10 頁合併成一個 chapter
CHAPTER_SIZE = 10
chapters = []

for chapter_idx in range(0, total_pages, CHAPTER_SIZE):
    end_idx = min(chapter_idx + CHAPTER_SIZE, total_pages)
    chapter_html = ''
    
    for page_num in range(chapter_idx, end_idx):
        page = doc[page_num]
        pix = page.get_pixmap(dpi=100)  # 中等 DPI
        img_data = pix.tobytes("jpeg")
        
        img_filename = f'img/p{page_num+1:03d}.jpg'
        img_item = epub.EpubItem(uid=f'i{page_num+1}', file_name=img_filename, 
                                  media_type='image/jpeg', content=img_data)
        book.add_item(img_item)
        
        chapter_html += f'<div class="chapter"><img src="{img_filename}"/></div>\n'
    
    ch = epub.EpubHtml(
        title=f'第 {chapter_idx+1}-{end_idx} 頁', 
        file_name=f'ch{chapter_idx//CHAPTER_SIZE+1:02d}.xhtml', 
        lang='zh'
    )
    ch.content = f'<html><body>{chapter_html}</body></html>'
    ch.add_item(style)
    book.add_item(ch)
    chapters.append(ch)
    
    print(f"  完成 {end_idx}/{total_pages} 頁")

book.toc = [epub.Link(ch.file_name, ch.title, f'ch{i}') for i, ch in enumerate(chapters)]
book.add_item(epub.EpubNcx())
book.add_item(epub.EpubNav())

epub.write_epub(OUTPUT_PATH, book)
doc.close()

size_mb = os.path.getsize(OUTPUT_PATH) / (1024*1024)
print(f"\n✅ 完成：{size_mb:.1f} MB")
print(f"📚 共 {len(chapters)} 個章節")
