#!/usr/bin/env python3
"""
生成绘本 PDF Demo - 第 13-14 页跨页
使用 reportlab 创建可打印的 PDF 文件
"""

from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from reportlab.lib import colors
from reportlab.platypus import Image, Paragraph
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
from PIL import Image as PILImage
import os

# 注册中文 CID 字体（支持简体中文）
try:
    pdfmetrics.registerFont(UnicodeCIDFont('STSong-Light'))
    pdfmetrics.registerFont(UnicodeCIDFont('STHeiti-Light'))
    print("✅ 中文字体已加载 (CID)")
except Exception as e:
    print(f"⚠️  CID 字体加载失败：{e}")

# 配置
OUTPUT_DIR = "/root/.openclaw/workspace/trilingual-picturebook/output"
PDF_OUTPUT = "/root/.openclaw/workspace/trilingual-picturebook/demo/带文案 demo-第 13-14 页.pdf"

# 图片路径
IMG_13 = os.path.join(OUTPUT_DIR, "gemini-page-13.png")
IMG_14 = os.path.join(OUTPUT_DIR, "gemini-page-14.png")

# PDF 尺寸 - A4 横向 (29.7cm x 21cm)
PAGE_WIDTH = 29.7 * cm
PAGE_HEIGHT = 21 * cm

# 边距
MARGIN = 1.5 * cm

# 文案内容
TEXT_CONTENT = {
    "top_left": [
        ("哥哥妹妹，下楼吃早餐", 18),
        ("哥哥妹妹，落樓食早餐", 16),
        ("阿兄阿妹，落樓食早頓", 16),
    ],
    "top_right": [
        ("旺財說：「汪汪！早上好！」", 18),
        ("旺財說：「汪汪！早晨！」", 16),
        ("旺財講：「汪汪！早！」", 16),
    ],
}


def create_pdf_demo():
    """创建 PDF Demo"""
    
    c = canvas.Canvas(PDF_OUTPUT, pagesize=A4)
    c.setPageSize((PAGE_WIDTH, PAGE_HEIGHT))  # 横向 A4
    
    print("📄 创建 PDF Demo: 第 13-14 页跨页")
    print(f"   尺寸：{PAGE_WIDTH/cm:.1f}cm x {PAGE_HEIGHT/cm:.1f}cm")
    
    # === 背景 ===
    c.setFillColor(colors.HexColor("#FFFDF5"))  # 米白色背景
    c.rect(0, 0, PAGE_WIDTH, PAGE_HEIGHT, fill=True, stroke=False)
    
    # === 左页图片 (gemini-page-13) ===
    img_width = (PAGE_WIDTH - 3 * MARGIN) / 2
    img_height = PAGE_HEIGHT * 0.55
    img_x_left = MARGIN
    img_y = PAGE_HEIGHT - MARGIN - img_height
    
    if os.path.exists(IMG_13):
        try:
            img_obj = Image(IMG_13, width=img_width, height=img_height)
            img_obj.drawOn(c, img_x_left, img_y)
            print(f"   ✅ 左页图片：{IMG_13}")
        except Exception as e:
            print(f"   ❌ 左页图片加载失败：{e}")
            # 绘制占位框
            c.setStrokeColor(colors.gray)
            c.setFillColor(colors.lightgrey)
            c.rect(img_x_left, img_y, img_width, img_height, fill=True, stroke=True)
            c.setFillColor(colors.black)
            c.setFont("Helvetica", 12)
            c.drawCentredString(img_x_left + img_width/2, img_y + img_height/2, "左页图片占位")
    else:
        print(f"   ⚠️  左页图片不存在：{IMG_13}")
        c.setStrokeColor(colors.gray)
        c.setFillColor(colors.lightgrey)
        c.rect(img_x_left, img_y, img_width, img_height, fill=True, stroke=True)
        c.setFillColor(colors.black)
        c.setFont("Helvetica", 12)
        c.drawCentredString(img_x_left + img_width/2, img_y + img_height/2, "gemini-page-13.png")
    
    # === 右页图片 (gemini-page-14) ===
    img_x_right = MARGIN * 2 + img_width
    
    if os.path.exists(IMG_14):
        try:
            img_obj = Image(IMG_14, width=img_width, height=img_height)
            img_obj.drawOn(c, img_x_right, img_y)
            print(f"   ✅ 右页图片：{IMG_14}")
        except Exception as e:
            print(f"   ❌ 右页图片加载失败：{e}")
            c.setStrokeColor(colors.gray)
            c.setFillColor(colors.lightgrey)
            c.rect(img_x_right, img_y, img_width, img_height, fill=True, stroke=True)
            c.setFillColor(colors.black)
            c.setFont("Helvetica", 12)
            c.drawCentredString(img_x_right + img_width/2, img_y + img_height/2, "右页图片占位")
    else:
        print(f"   ⚠️  右页图片不存在：{IMG_14}")
        c.setStrokeColor(colors.gray)
        c.setFillColor(colors.lightgrey)
        c.rect(img_x_right, img_y, img_width, img_height, fill=True, stroke=True)
        c.setFillColor(colors.black)
        c.setFont("Helvetica", 12)
        c.drawCentredString(img_x_right + img_width/2, img_y + img_height/2, "gemini-page-14.png")
    
    # === 分割线 ===
    c.setStrokeColor(colors.HexColor("#DDDDDD"))
    c.setLineWidth(1)
    c.line(MARGIN, img_y - 0.3 * cm, PAGE_WIDTH - MARGIN, img_y - 0.3 * cm)
    
    # === 文字区域 ===
    text_y_start = img_y - 1.5 * cm
    
    # 左页文字
    c.setFillColor(colors.HexColor("#333333"))
    for i, (text, font_size) in enumerate(TEXT_CONTENT["top_left"]):
        y_pos = text_y_start - i * 0.9 * cm
        c.setFont("STHeiti-Light" if i == 0 else "STSong-Light", font_size)
        c.drawString(MARGIN, y_pos, text)
    
    # 右页文字
    for i, (text, font_size) in enumerate(TEXT_CONTENT["top_right"]):
        y_pos = text_y_start - i * 0.9 * cm
        c.setFont("STHeiti-Light" if i == 0 else "STSong-Light", font_size)
        c.drawString(img_x_right, y_pos, text)
    
    # === QR 码占位框 ===
    qr_size = 2.5 * cm
    qr_x = PAGE_WIDTH - MARGIN - qr_size
    qr_y = MARGIN
    c.setStrokeColor(colors.HexColor("#4A90D9"))
    c.setLineWidth(2)
    c.rect(qr_x, qr_y, qr_size, qr_size, fill=False, stroke=True)
    c.setFillColor(colors.HexColor("#4A90D9"))
    c.setFont("Helvetica", 10)
    c.drawCentredString(qr_x + qr_size/2, qr_y + qr_size/2, "QR 码\n听音频")
    
    # === 页码 ===
    c.setFillColor(colors.gray)
    c.setFont("Helvetica", 9)
    c.drawCentredString(PAGE_WIDTH/2, MARGIN - 0.5 * cm, "第 13-14 页 · 哥哥妹妹早上好")
    
    # === 质量标注 ===
    c.setFillColor(colors.HexColor("#888888"))
    c.setFont("Helvetica-Oblique", 8)
    c.drawString(MARGIN, PAGE_HEIGHT - 0.8 * cm, "图片质量：1k (512×512)")
    c.drawString(PAGE_WIDTH - MARGIN - 3 * cm, PAGE_HEIGHT - 0.8 * cm, f"生成日期：2026-03-02")
    
    # 保存 PDF
    c.save()
    
    print(f"\n✅ PDF 已保存：{PDF_OUTPUT}")
    
    # 显示文件大小
    file_size = os.path.getsize(PDF_OUTPUT) / 1024
    print(f"   文件大小：{file_size:.1f} KB")
    
    return PDF_OUTPUT


if __name__ == "__main__":
    create_pdf_demo()
