# -*- coding: utf-8 -*-
"""TLP MÀU ĐƠN HỆ DUNG MÔI 2025: render 2 trang scan ở DPI cao + cắt ô lưới để AGY đọc bảng."""
import os
import pymupdf
from PIL import Image

D = r'C:\Claw 2\Nghien cuu\Du-an-A-Quy-trinh-son\nguon_TLP'
PDF = os.path.join(D, 'BANG_THONG_TIN_TLP_MAU_DON_HE_DUNG_MOI_2025_0001.pdf')
OUT = os.path.join(D, 'anh_trang')
os.makedirs(OUT, exist_ok=True)

doc = pymupdf.open(PDF)
zoom = 300 / 72.0          # 300 dpi
mat = pymupdf.Matrix(zoom, zoom)

files = []
for i, pg in enumerate(doc, 1):
    pix = pg.get_pixmap(matrix=mat)
    full = os.path.join(OUT, 'trang_%d_full.png' % i)
    pix.save(full)
    files.append(full)
    print('trang %d: %dx%d px · %d byte → %s' % (i, pix.width, pix.height, os.path.getsize(full), os.path.basename(full)))

    # cắt lưới 3 cột × 3 hàng, chồng lề 12% — mỗi ô phóng đủ lớn để đọc chữ nhỏ trong bảng
    im = Image.open(full).convert('RGB')
    W, H = im.size
    cw, ch, ov = W // 3, H // 3, 0.12
    n = 0
    for r in range(3):
        for c in range(3):
            x0 = max(0, int(c * cw - cw * ov)); y0 = max(0, int(r * ch - ch * ov))
            x1 = min(W, int((c + 1) * cw + cw * ov)); y1 = min(H, int((r + 1) * ch + ch * ov))
            crop = im.crop((x0, y0, x1, y1))
            n += 1
            p = os.path.join(OUT, 'trang%d_o%d_%dx%d.jpg' % (i, n, r + 1, c + 1))
            crop.save(p, quality=95)
    print('   cắt %d ô cho trang %d' % (n, i))

print('thư mục ảnh:', OUT)
for f in sorted(os.listdir(OUT)):
    print('   ', f, os.path.getsize(os.path.join(OUT, f)), 'byte')
