#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""公司简介双页物料 · 构建脚本
用途：注入 Logo → 自检 → 渲染 PDF/PNG。
改内容后重跑本脚本即可，不要手工改已注入的成品。
"""
import base64, os, re, subprocess, sys

HERE = os.path.dirname(os.path.abspath(__file__))
SRC  = os.path.join(HERE, '公司简介与产品特色_双页_原稿.html')
OUT  = os.path.join(HERE, '公司简介与产品特色_双页.html')
PDF  = os.path.join(HERE, '公司简介与产品特色_双页.pdf')
LOGO = os.path.expanduser('~/work/公司资料/logo_transparent.png')
CHROME = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'

# ── 1. 注入 Logo ──
b64  = base64.b64encode(open(LOGO, 'rb').read()).decode()
html = open(SRC, encoding='utf-8').read()
n_ph = html.count('__LOGO__')
html = html.replace('__LOGO__', f'data:image/png;base64,{b64}')
open(OUT, 'w', encoding='utf-8').write(html)
print(f"[1] Logo 注入：占位符 {n_ph} 处 → 残留 {html.count('__LOGO__')} 处（须 0）")

# ── 2. 交付前自检 ──
print("\n[2] 交付前自检")
cust = ['万孚','圣湘','天隆','迪安','迈瑞','亚辉龙','新产业','安图','纳克','明德',
        '诺唯赞','之江','硕世','达安','凯普','艾德','透景','热景','博奥','华大']
ban  = ['敲门砖','切入点','降本增效','独家技术','竞品亦采购','成本价','折扣','底价','毛利']
fails = []
h = [c for c in cust if c in html]
print(f"    客户名        : {len(h)} 处 {'✅' if not h else '❌ '+str(h)}")
b = [w for w in ban if w in html]
print(f"    禁内部策略词  : {len(b)} 处 {'✅' if not b else '❌ '+str(b)}")
for k, pat in [('Slogan','守护生命健康，缔造美好生活'),('电话','0756-8699969'),
               ('网址','www.biori.com'),('邮箱','marketing@biori.com'),
               ('地址','珠海市香洲区水岸一路88号')]:
    c = html.count(pat); ok = c > 0
    print(f"    落款 {k:<6}  : {c} 处 {'✅' if ok else '❌'}")
    if not ok: fails.append(k)
pages, tops, slg = html.count('class="page"'), html.count('class="topbar"'), html.count('class="slogan"')
ok = pages == tops == slg and pages == 2
print(f"    每页顶栏+slogan: 页 {pages} / 顶栏 {tops} / slogan {slg} {'✅' if ok else '❌'}")
print(f"    残留占位符     : {html.count('__LOGO__')} {'✅' if html.count('__LOGO__')==0 else '❌'}")
print(f"    成品体积       : {os.path.getsize(OUT)/1024:.1f} KB")

# ── 3. 渲染 PDF + 页数校验（>2 即溢出 A4）──
if os.path.exists(CHROME):
    subprocess.run([CHROME,'--headless','--disable-gpu','--no-sandbox','--no-pdf-header-footer',
                    f'--print-to-pdf={PDF}', '--virtual-time-budget=6000',
                    f'file://{OUT}'], capture_output=True)
    d = open(PDF,'rb').read()
    npg = len(re.findall(rb'/Type\s*/Page[^s]', d))
    print(f"\n[3] 渲染 PDF：{npg} 页 {'✅ 未溢出 A4' if npg==2 else '❌ 溢出，需压缩'}  ({len(d)/1024:.1f} KB)")
    for f in ('_full.png','_p1.png'):
        p = os.path.join(HERE, f)
        if os.path.exists(p): os.remove(p)
    subprocess.run([CHROME,'--headless','--disable-gpu','--no-sandbox','--hide-scrollbars',
                    '--window-size=794,2280', f'--screenshot={os.path.join(HERE,"_full.png")}',
                    '--virtual-time-budget=5000', f'file://{OUT}'], capture_output=True)
    print(f"   全页截图: _full.png {'✅' if os.path.exists(os.path.join(HERE,'_full.png')) else '❌'}")

sys.exit(1 if fails else 0)
