Initial cropping support

This commit is contained in:
2026-09-09 14:53:04 +02:00
parent 359c62004c
commit 3969580e01
13 changed files with 1092 additions and 14 deletions
+3 -3
View File
@@ -589,7 +589,7 @@ class CopienatorApp(tk.Tk):
return
self._rendering = True
redo = step.section == REFAIRE_SECTION
expanded_form = redo or step.id in {"page_splitter", "cutleft", "labels"}
expanded_form = redo or step.id in {"page_splitter", "crop_blank_margins", "cutleft", "labels"}
self.console.configure(height=8 if expanded_form else 14)
self.rowconfigure(1, weight=4 if expanded_form else 3)
self.rowconfigure(2, weight=1 if expanded_form else 2)
@@ -731,7 +731,7 @@ class CopienatorApp(tk.Tk):
return row + 1
if step.id in {"review_persp", "correction"}:
row = self._correction_folder_buttons(row)
if step.id in {"page_splitter", "cutleft", "labels"}:
if step.id in {"page_splitter", "crop_blank_margins", "cutleft", "labels"}:
evaluation = self.evaluation
paths = copy_pdf_paths(evaluation) if evaluation else []
self.copy_paths = {path.name: path for path in paths}
@@ -762,7 +762,7 @@ class CopienatorApp(tk.Tk):
command=self._open_selected_copy,
state="normal" if names else "disabled",
).grid(row=1, column=1, padx=(6, 0), pady=(7, 0))
if step.id in {"page_splitter", "cutleft", "labels"}:
if step.id in {"page_splitter", "crop_blank_margins", "cutleft", "labels"}:
actions = ttk.Frame(copies)
actions.grid(row=2, column=0, columnspan=2, sticky="w", pady=(7, 0))
label = "Refaire la copie sélectionnée" if step.id == "page_splitter" else "Cibler la copie sélectionnée"
+13 -10
View File
@@ -176,6 +176,19 @@ def build_workflow(show_personal_steps: bool) -> list[StepDefinition]:
arguments=(arg_target(), ArgumentSpec("marked", "Copies signalées uniquement", "bool", "--marked")),
artifacts=("Copies", "Copies Originales"),
),
StepDefinition(
"crop_blank_margins",
"Prétraitement des copies",
"Rogner les zones vides",
"Facultatif : détecte les zones vides en haut et en bas malgré les lignes et les perforations, "
"puis remplace les PDF dans Copies. Les versions non rognées sont sauvegardées. "
"À effectuer avant la détection des labels. Traite plusieurs copies en parallèle.",
(python("default", "Rognage des zones vides", "crop-margins"),),
arguments=(arg_target("Dossier de l’évaluation ou PDF dans Copies"),
ArgumentSpec("workers", "Copies traitées en parallèle", "int", "--workers", default=5)),
optional=True,
requires=("Copies",),
),
StepDefinition(
"cutleft",
"Prétraitement des copies",
@@ -235,16 +248,6 @@ def build_workflow(show_personal_steps: bool) -> list[StepDefinition]:
artifacts=("Par label",),
auto_start_first_visit=True,
),
StepDefinition(
"verify_groups",
"Labels et regroupement",
"Vérifier les groupes produits",
"Vérifie que chaque réponse PDF apparaît dans les métadonnées des groupes.",
(python("default", "Vérification des groupes", "verify-groups"),),
arguments=(arg_target("Dossier de l’évaluation"),),
optional=True,
requires=("Copies", "Par label"),
),
StepDefinition(
"correction",
"Correction",