"""
Tronque un PDF aux N premières pages (pour aperçu gratuit).
"""
import io
from pypdf import PdfReader, PdfWriter

PREVIEW_PAGES = 3


def truncate_pdf_to_preview(pdf_bytes, max_pages: int = PREVIEW_PAGES) -> bytes:
    """
    Retourne les premières max_pages du PDF.
    Si le PDF a moins de pages, retourne tel quel.
    """
    if not pdf_bytes:
        return pdf_bytes
    try:
        reader = PdfReader(io.BytesIO(pdf_bytes))
        total = len(reader.pages)
        if total <= max_pages:
            return pdf_bytes
        writer = PdfWriter()
        for i in range(min(max_pages, total)):
            writer.add_page(reader.pages[i])
        out = io.BytesIO()
        writer.write(out)
        return out.getvalue()
    except Exception:
        return pdf_bytes
