# -*- coding: utf-8 -*-
"""Tách PDF hệ màu METAL COMPLEX (08/10/2026): chữ + render trang 300 DPI + ảnh nhúng."""
import os, re, sys
import fitz  # pymupdf

PDF = r'C:\Users\admin\AppData\Local\hermes\cache\documents\doc_e1d0e3f9ab5e_He_mau_metal_complex_bang_thu_mau_va_hinh_anh_mau_UPDATE_08_10_2026.pdf'
GOC = r'C:\Claw 2\Nghien cuu\Du-an-B-He-mau-Stain-Glaze\metal-complex-08-10'
TRANG = os.path.join(GOC, 'trang')
ANH = os.path.join(GOC, 'anh_o')
for d in (GOC, TRANG, ANH):
    os.makedirs(d, exist_ok=True)

d = fitz.open(PDF)
print('số trang:', d.page_count)
# 1. chữ
txt = []
for i, p in enumerate(d, 1):
    txt.append('\n\n===== TRANG %d =====\n' % i + p.get_text())
open(os.path.join(GOC, '_pdf_text.txt'), 'w', encoding='utf-8').write(''.join(txt))
print('chữ:', sum(len(t) for t in txt), 'ký tự →', os.path.join(GOC, '_pdf_text.txt'))

# 2. render trang 300 DPI
for i, p in enumerate(d, 1):
    pm = p.get_pixmap(dpi=300)
    f = os.path.join(TRANG, 'trang_%d.png' % i)
    pm.save(f)
    print('   trang %d → %s (%.1f MB)' % (i, os.path.basename(f), os.path.getsize(f) / 1048576))

# 3. ảnh nhúng (bản gốc)
n = 0
for i, p in enumerate(d, 1):
    for k, im in enumerate(p.get_images(full=True), 1):
        xref = im[0]
        try:
            pix = fitz.Pixmap(d, xref)
            if pix.n > 4:  # CMYK → RGB
                pix = fitz.Pixmap(fitz.csRGB, pix)
            f = os.path.join(ANH, 't%d_o%02d.png' % (i, k))
            pix.save(f)
            n += 1
        except Exception as e:
            print('   (bỏ qua ảnh trang %d #%d: %s)' % (i, k, e))
print('ảnh nhúng đã tách:', n, '→', ANH)
tong = sum(os.path.getsize(os.path.join(ANH, x)) for x in os.listdir(ANH))
print('dung lượng ảnh:', round(tong / 1048576, 1), 'MB')
print('--- 300 ký tự cuối trang 1 ---')
print(txt[0][-300:])
