From: Christian Heller Date: Sun, 24 Sep 2023 00:08:10 +0000 (+0200) Subject: In Bookmaker, simplify symmetry code. X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/static/task?a=commitdiff_plain;h=7377d4ebbb6916af2acce3d3dc8e44eb58e2674d;p=misc In Bookmaker, simplify symmetry code. --- diff --git a/bookmaker.py b/bookmaker.py index 64acf6f..3a36b96 100755 --- a/bookmaker.py +++ b/bookmaker.py @@ -84,7 +84,10 @@ if args.crop_range: crops = initial_split[0] start_page, end_page = parse_page_range(page_range, pages_to_add) crop_left, crop_bottom, crop_right, crop_top = [float(x) * points_per_cm for x in crops.split(',')] - print("-c: to pages %d to %d applying crops: left %dcm, bottom %dcm, right %dcm, top %dcm" % (start_page + 1, end_page, crop_left, crop_bottom, crop_right, crop_top)) + if args.symmetry: + print("-c, -t: to pages %d to %d applying crops: left %dcm, bottom %dcm, right %dcm, top %dcm (but alternating left and right crop between even and odd pages)" % (start_page + 1, end_page, crop_left, crop_bottom, crop_right, crop_top)) + else: + print("-c: to pages %d to %d applying crops: left %dcm, bottom %dcm, right %dcm, top %dcm" % (start_page + 1, end_page, crop_left, crop_bottom, crop_right, crop_top)) cropped_width = a4_width - crop_left - crop_right cropped_height = a4_height - crop_bottom - crop_top zoom = 1 @@ -98,7 +101,10 @@ if args.crop_range: else: zoom = max(zoom_horizontal, zoom_vertical) for page_num in range(start_page, end_page): - crops_at_page[page_num] = (crop_left, crop_bottom, crop_right, crop_top) + if args.symmetry and page_num % 2: + crops_at_page[page_num] = (crop_right, crop_bottom, crop_left, crop_top) + else: + crops_at_page[page_num] = (crop_left, crop_bottom, crop_right, crop_top) zoom_at_page[page_num] = zoom writer = pypdf.PdfWriter() @@ -107,10 +113,7 @@ if not args.nup4: for i, page in enumerate(pages_to_add): crop_left, crop_bottom, crop_right, crop_top = crops_at_page[i] zoom = zoom_at_page[i] - if args.symmetry and odd_page: - page.add_transformation(pypdf.Transformation().translate(tx=-crop_right, ty=-crop_bottom)) - else: - page.add_transformation(pypdf.Transformation().translate(tx=-crop_left, ty=-crop_bottom)) + page.add_transformation(pypdf.Transformation().translate(tx=-crop_left, ty=-crop_bottom)) page.add_transformation(pypdf.Transformation().scale(zoom, zoom)) cropped_width = a4_width - crop_left - crop_right cropped_height = a4_height - crop_bottom - crop_top @@ -176,15 +179,9 @@ else: zoom = zoom_at_page[new_i] page.add_transformation(pypdf.Transformation().translate(ty=(a4_height / zoom - (a4_height - crop_top)))) if i == 0 or i == 2: - if args.symmetry: - page.add_transformation(pypdf.Transformation().translate(tx=-crop_left)) - else: - page.add_transformation(pypdf.Transformation().translate(tx=-crop_right)) + page.add_transformation(pypdf.Transformation().translate(tx=-crop_left)) elif i == 1 or i == 3: - if args.symmetry: - page.add_transformation(pypdf.Transformation().translate(tx=(a4_width / zoom - (a4_width - crop_left)))) - else: - page.add_transformation(pypdf.Transformation().translate(tx=(a4_width / zoom - (a4_width - crop_right)))) + page.add_transformation(pypdf.Transformation().translate(tx=(a4_width / zoom - (a4_width - crop_right)))) page.add_transformation(pypdf.Transformation().scale(zoom * bonus_shrink_factor, zoom * bonus_shrink_factor)) if i == 2 or i == 3: page.add_transformation(pypdf.Transformation().translate(ty=-2*printable_margin/printable_scale))