"""PDF 어댑터 — HTML → PDF (Playwright Chromium via Node)."""
from __future__ import annotations

import subprocess
import tempfile
from pathlib import Path

from app.config import BACKEND_ROOT

NODE_DIR = BACKEND_ROOT / "export_node"


def export_html(html: str, out_path: Path) -> Path:
    """임의의 HTML 문자열 → PDF (멀티페이지 합본 HTML 포함)."""
    with tempfile.NamedTemporaryFile("w", suffix=".html", delete=False, encoding="utf-8") as f:
        f.write(html)
        html_path = f.name
    script = NODE_DIR / "html_to_pdf.mjs"
    proc = subprocess.run(
        ["node", str(script), html_path, str(out_path)],
        capture_output=True, text=True, cwd=str(NODE_DIR), timeout=180,
    )
    Path(html_path).unlink(missing_ok=True)
    if proc.returncode != 0 or not out_path.exists():
        raise RuntimeError(f"PDF 생성 실패: {proc.stderr or proc.stdout}")
    return out_path
