from PIL import Image, ImageDraw, ImageFont
import os, glob, statistics, math

PROJ='/Users/bot1/Volumes/root_for_ai/AI工作区/良渚_IP授权PDF直接修改_20260611_1117'
IN=f'{PROJ}/work/rendered_before'
OUT=f'{PROJ}/work/patched_pages_stable_v4'
os.makedirs(OUT, exist_ok=True)

FONT='/System/Library/Fonts/PingFang.ttc'
def font(size):
    for fp in [FONT, '/System/Library/Fonts/STHeiti Light.ttc', '/System/Library/Fonts/Supplemental/Arial Unicode.ttf']:
        try: return ImageFont.truetype(fp, size)
        except Exception: pass
    return ImageFont.load_default()

BODY=(52,47,42); TITLE=(56,48,42); GOLD=(175,129,55); OFFWHITE=(246,244,238)

def rect(d, box, fill=OFFWHITE, pad=2):
    x0,y0,x1,y1=box
    d.rectangle((x0-pad,y0-pad,x1+pad,y1+pad), fill=fill)

def write(d, xy, s, size, fill=BODY, spacing=4):
    d.multiline_text(xy, s, font=font(size), fill=fill, spacing=spacing)

def patch(page_no, ops):
    im=Image.open(f'{IN}/page_{page_no:02d}.png').convert('RGB')
    d=ImageDraw.Draw(im)
    for op in ops:
        rect(d, op['box'], op.get('fill', OFFWHITE), op.get('pad',3))
        if op.get('text'):
            write(d, op['xy'], op['text'], op.get('size',24), op.get('color',BODY), op.get('spacing',4))
    im.save(f'{OUT}/page_{page_no:02d}.jpg', quality=96)

# Copy all originals first
for fp in sorted(glob.glob(f'{IN}/page_*.png')):
    Image.open(fp).convert('RGB').save(f'{OUT}/{os.path.splitext(os.path.basename(fp))[0]}.jpg', quality=96)

edits={
4:[
    {'box':(96,438,980,526),'xy':(104,448),'text':'这里是实证中华五千年文明史的圣地。2019年，良渚古城遗址被列入《世界遗产名录》，\n标志着中华五千年文明史得到了国际社会的普遍认可。','size':24,'spacing':7},
],
5:[
    {'box':(82,174,1050,248),'xy':(88,182),'text':'良渚古城遗址，2019年正式列入《世界遗产名录》——标志着中华五千年文明史获得国际学界\n广泛认可。','size':26,'spacing':7},
    {'box':(850,552,1165,642),'xy':(884,579),'text':'最早的堤坝系统','size':31},
],
8:[
    {'box':(176,490,790,610),'xy':(184,498),'text':'「良渚论坛」已成功举办三届，累计吸引全球115个国家和地区的1300\n余名嘉宾参加，成为中华文明与世界文明交流互鉴的\n固定国家级对话机制。','size':22,'spacing':5},
    {'box':(940,490,1535,572),'xy':(948,500),'text':'二期工程总建筑面积约6.5万平方米，已列入重要建设计划。\n博物馆的物理扩容，标志着文化影响力的持续攀升。','size':23,'spacing':7},
],
9:[
    {'box':(82,78,1225,154),'xy':(86,91),'text':'市场热度飙升——从「文明遗产」到「文化现象」','size':56,'color':TITLE},
    {'box':(846,462,1178,520),'xy':(852,469),'text':'1000余家  产业集聚','size':36,'color':GOLD},
],
13:[
    {'box':(86,78,870,154),'xy':(91,92),'text':'市场现状：品牌的三重焦虑','size':56,'color':TITLE},
],
14:[
    {'box':(105,220,1385,318),'xy':(108,230),'text':'良渚代表的不只是中华民族屹立于世界之巅的「文明高度」，更是融入日常、延续千年的\n一套中国式的「生活哲学」。','size':35,'spacing':8},
    {'box':(1380,848,1518,880),'xy':(1384,852),'text':'IP 内核价值引擎','size':18},
],
15:[
    {'box':(88,270,1420,350),'xy':(92,280),'text':'良渚先民用最凝练的直线与圆，创造了外方内圆的玉琮；以精准的阴刻线条，在玉石上刻下细如发丝的神人兽面纹。\n这是一种跨越时空、直抵现代设计内核的几何美学语言。它不喧哗，却有无声的惊雷。','size':25,'spacing':8},
],
17:[
    {'box':(86,126,1010,205),'xy':(91,140),'text':'治愈时代焦虑的秩序感与田园梦','size':56,'color':TITLE},
],
21:[
    {'box':(88,142,1030,220),'xy':(92,156),'text':'史前时代的系统工程与极致匠心','size':56,'color':TITLE},
    {'box':(600,420,1245,530),'xy':(620,430),'text':'1毫米 / 4–5条阴线\n玉器纹饰的雕刻精度——肉眼几乎不可辨识的史前微雕','size':26,'color':GOLD,'spacing':8},
],
22:[
    {'box':(84,142,900,220),'xy':(88,156),'text':'一整套属于东方的色彩体系','size':56,'color':TITLE},
    {'box':(1180,615,1278,655),'xy':(1188,623),'text':'#D8CBC0','size':16},
],
23:[
    {'box':(90,78,530,154),'xy':(94,92),'text':'良渚色彩系统','size':56,'color':TITLE},
],
28:[
    {'box':(88,232,560,365),'xy':(92,242),'text':'以周大福高级珠宝线传承工艺打造联名产品，\n重磅上线周大福品牌荟馆店，\n实现文化与产品的双「传承」概念营销。','size':24,'spacing':8},
],
35:[
    {'box':(1110,485,1542,606),'xy':(1114,494),'text':'品牌冠名或联合出品专题短片（「极简美学」\n「匠心精神」「远古密码」等主题），\n良渚全媒体矩阵联合推送。','size':22,'spacing':7},
],
36:[
    {'box':(455,455,710,545),'xy':(566,476),'text':'05','size':42,'color':TITLE},
],
}

for pg, ops in edits.items(): patch(pg, ops)
imgs=[Image.open(fp).convert('RGB') for fp in sorted(glob.glob(f'{OUT}/page_*.jpg'))]
final=f'{PROJ}/deliverables/良渚IP授权介绍2026_稳定修正版_v4.pdf'
imgs[0].save(final, save_all=True, append_images=imgs[1:], resolution=144.0, quality=95)
print(final)
print(len(imgs))
