Repository Public Research preview
1#!/usr/bin/env python32"""planches.py deck.pdf dossier_sortie [par_planche=12] — planches de vignettes (4 colonnes) pour inspection visuelle de chaque diapositive."""3import sys, fitz, math4pdf, out = sys.argv[1], sys.argv[2]; n = int(sys.argv[3]) if len(sys.argv) > 3 else 125import os; os.makedirs(out, exist_ok=True)6d = fitz.open(pdf); cols = 4; rows = math.ceil(n / cols); zoom = 0.97w, h = int(d[0].rect.width * zoom), int(d[0].rect.height * zoom)8for start in range(0, len(d), n):9 pages = list(range(start, min(start + n, len(d))))10 sheet = fitz.Pixmap(fitz.csRGB, fitz.IRect(0, 0, cols * (w + 6), rows * (h + 22)), False); sheet.clear_with(255)11 for k, i in enumerate(pages):12 pix = d[i].get_pixmap(matrix=fitz.Matrix(zoom, zoom), alpha=False)13 x, y = (k % cols) * (w + 6), (k // cols) * (h + 22) + 1814 pix.set_origin(x, y); sheet.copy(pix, pix.irect)15 sheet.save(f"{out}/planche_{start + 1:03d}-{pages[-1] + 1:03d}.png")16 # étiquettes de numéro de page (via une page fitz temporaire)17print(f"{len(d)} pages → {math.ceil(len(d) / n)} planches dans {out}")18