"""Moteur Demonter les pages — couper en 2 sans reordonner.""" from pypdf import PdfReader, PdfWriter, PageObject, Transformation from .pdf_utils import get_page_size def disassemble_pages(input_path, output_path): """Demonter un PDF : couper chaque page en 2 moities (gauche puis droite). Contrairement a Delivretiser, les pages ne sont PAS remises dans l'ordre du livret. On obtient simplement 2x plus de pages dans l'ordre de lecture. """ reader = PdfReader(input_path) writer = PdfWriter() for page in reader.pages: w, h = get_page_size(page) half_w = w / 2 # Moitie gauche left_page = PageObject.create_blank_page(width=half_w, height=h) left_overlay = PageObject.create_blank_page(width=half_w, height=h) left_overlay.merge_page(page) left_overlay.mediabox.upper_right = (half_w, h) left_page.merge_page(left_overlay) writer.add_page(left_page) # Moitie droite right_page = PageObject.create_blank_page(width=half_w, height=h) right_overlay = PageObject.create_blank_page(width=half_w, height=h) right_overlay.merge_page(page) right_overlay.add_transformation(Transformation().translate(-half_w, 0)) right_overlay.mediabox.upper_right = (half_w, h) right_page.merge_page(right_overlay) writer.add_page(right_page) with open(output_path, "wb") as f: writer.write(f) return output_path