"""Moteur Insertion de pages blanches.""" from pypdf import PdfReader, PdfWriter from .pdf_utils import get_page_size def insert_blank_pages(input_path, output_path, mode="after", position=None, every_n=None, target_multiple=None, page_size=None): """Inserer des pages blanches. mode: "before", "after", "every_n", "pad_to_multiple" position: numero de page (1-based) pour before/after every_n: inserer apres chaque N pages target_multiple: arrondir au multiple de N page_size: (w, h) en points ou None pour meme taille que page adjacente """ reader = PdfReader(input_path) writer = PdfWriter() if mode == "pad_to_multiple" and target_multiple: for page in reader.pages: writer.add_page(page) num = len(reader.pages) remainder = num % target_multiple if remainder != 0: to_add = target_multiple - remainder last_w, last_h = get_page_size(reader.pages[-1]) w, h = page_size if page_size else (last_w, last_h) for _ in range(to_add): writer.add_blank_page(w, h) elif mode == "every_n" and every_n: for i, page in enumerate(reader.pages): writer.add_page(page) if (i + 1) % every_n == 0 and i + 1 < len(reader.pages): w, h = get_page_size(page) bw, bh = page_size if page_size else (w, h) writer.add_blank_page(bw, bh) elif mode in ("before", "after") and position: idx = position - 1 # 0-based for i, page in enumerate(reader.pages): if mode == "before" and i == idx: w, h = get_page_size(page) bw, bh = page_size if page_size else (w, h) writer.add_blank_page(bw, bh) writer.add_page(page) if mode == "after" and i == idx: w, h = get_page_size(page) bw, bh = page_size if page_size else (w, h) writer.add_blank_page(bw, bh) else: for page in reader.pages: writer.add_page(page) with open(output_path, "wb") as f: writer.write(f) return output_path