Outil d'imposition PDF desktop (PyQt6) remplacant Quite Imposing Plus. 9 fonctions : livret, n-up, step & repeat, imposition manuelle, jointure pages, pages blanches, numerotation, masquage, fonds perdus. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
"""Moteur Definition des fonds perdus (bleeds)."""
|
|
|
|
from pypdf import PdfReader, PdfWriter
|
|
from .pdf_utils import get_page_size, mm_to_pt
|
|
|
|
|
|
def define_bleeds(input_path, output_path, bleed_top=0, bleed_bottom=0,
|
|
bleed_left=0, bleed_right=0):
|
|
"""Definir les zones de fond perdu en etendant le TrimBox/BleedBox.
|
|
|
|
Les valeurs sont en millimetres.
|
|
"""
|
|
bt = mm_to_pt(bleed_top)
|
|
bb = mm_to_pt(bleed_bottom)
|
|
bl = mm_to_pt(bleed_left)
|
|
br = mm_to_pt(bleed_right)
|
|
|
|
reader = PdfReader(input_path)
|
|
writer = PdfWriter()
|
|
|
|
for page in reader.pages:
|
|
w, h = get_page_size(page)
|
|
|
|
# Le TrimBox definit la taille finale apres coupe
|
|
page.trimbox.lower_left = (bl, bb)
|
|
page.trimbox.upper_right = (w - br, h - bt)
|
|
|
|
# Le BleedBox inclut le fond perdu
|
|
page.bleedbox.lower_left = (0, 0)
|
|
page.bleedbox.upper_right = (w, h)
|
|
|
|
writer.add_page(page)
|
|
|
|
with open(output_path, "wb") as f:
|
|
writer.write(f)
|
|
return output_path
|