if args.page_range and len(args.page_range) > i:
range_string = args.page_range[i]
start_page, end_page = parse_page_range(range_string, reader.pages)
- for page_num in range(start_page, end_page):
- page = reader.pages[page_num]
+ new_page_num = 0
+ for old_page_num in range(start_page, end_page):
+ new_page_num += 1
+ page = reader.pages[new_page_num]
pages_to_add += [page]
- print("read in %s page number %d" % (input_file, page_num+1))
+ print("-i, -p: read in %s page number %d as new page %d" % (input_file, new_page_num+1, new_page_num))
# rotate page canvas
if args.rotate:
page.add_transformation(pypdf.Transformation().translate(tx=-a4_width/2, ty=-a4_height/2))
page.add_transformation(pypdf.Transformation().rotate(-90))
page.add_transformation(pypdf.Transformation().translate(tx=a4_width/2, ty=a4_height/2))
+ print("-r: rotating (by 90°) page", rotate)
# normalize all pages to portrait A4
for page in pages_to_add:
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(',')]
+ 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
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()
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
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))
writer.add_page(new_page)
i = 0
front_page = not front_page
+
+# write and close
for file in opened_files:
file.close()
-
with open(args.output_file, 'wb') as output_file:
writer.write(output_file)