"""본심 최종 검증: 샘플 이미지 구조 정확히 반영. 구조: 왼쪽 텍스트(넓게) | 오른쪽 이미지(좁게) + 상단 팝업 링크 텍스트: 원본 MDX 거의 그대로, 축약 없음 """ from __future__ import annotations import asyncio, sys, datetime, base64 from pathlib import Path ROOT = Path(__file__).parent.parent sys.path.insert(0, str(ROOT)) async def main(): from src.slide_measurer import capture_slide_screenshot out_dir = ROOT / "data" / "runs" / f"core_final_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}" out_dir.mkdir(parents=True, exist_ok=True) # dx1.png base64 img_path = Path("D:/ad-hoc/cel/public/assets/images/dx1.png") img_b64 = base64.b64encode(img_path.read_bytes()).decode() img_src = f"data:image/png;base64,{img_b64}" html = f"""
DX와 BIM의 관계
DX는 BIM과 같은 기술을 기반으로 산업 전반의 프로세스를 혁신하는 상위개념
건설산업의 DX는 GIS(공간정보), BIM, 디지털 트윈(가상환경)의 기술융합을 통해서만 실현 또는 구현 가능
GIS의 역할 : 지리적 데이터를 공간 분석하여 시각적으로 표현, 위치기반 정보 제공
BIM의 역할 : 형상정보와 내용정보가 포함된 3D모델로, 건설 정보 기반의 Process와 Product를 제공
건설산업의 DX
건설산업의 DX
""" wrapped = f"""
{html}
""" (out_dir / "core_final.html").write_text(wrapped, encoding="utf-8") s = await asyncio.to_thread(capture_slide_screenshot, wrapped) if s: (out_dir / "core_final.png").write_bytes(base64.b64decode(s)) print(f"결과: {out_dir}") if __name__ == "__main__": import logging logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s", datefmt="%H:%M:%S") logging.getLogger("selenium").setLevel(logging.WARNING) logging.getLogger("urllib3").setLevel(logging.WARNING) asyncio.run(main())