X-Git-Url: https://plomlompom.com/repos/process?a=blobdiff_plain;f=bookmaker.py;h=001877920d2cd1bb014ae2850e09726f6971fcbe;hb=be11e7df61a4d5f75b89fd655f57ccbeb2a539b7;hp=25e85994f125b785fbe3537cf84fce0a75cdd599;hpb=2180d2073c33449159b2bf4ff0289ab809ae2f95;p=misc diff --git a/bookmaker.py b/bookmaker.py index 25e8599..0018779 100755 --- a/bookmaker.py +++ b/bookmaker.py @@ -138,6 +138,15 @@ def parse_page_range(range_string, pages): end_page = int(end) return start_page, end_page +def draw_cut(canvas, x_spine_limit, direction, half_height): + outer_start_x = x_spine_limit - 0.5 * CUT_WIDTH * direction + inner_start_x = x_spine_limit + 0.5 * CUT_WIDTH * direction + middle_point_y = half_height + MIDDLE_POINT_DEPTH * direction + end_point_y = half_height + CUT_DEPTH * direction + canvas.line(inner_start_x, half_height, x_spine_limit, end_point_y) + canvas.line(x_spine_limit, end_point_y, x_spine_limit, middle_point_y) + canvas.line(x_spine_limit, middle_point_y, outer_start_x, half_height) + def parse_args(): parser = argparse.ArgumentParser(description=__doc__, epilog=help_epilogue, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument("-i", "--input_file", action="append", required=True, help="input PDF file") @@ -422,34 +431,20 @@ def main(): printable_offset_y = printable_margin * A4_HEIGHT / A4_WIDTH new_page.add_transformation(pypdf.Transformation().scale(printable_scale, printable_scale)) new_page.add_transformation(pypdf.Transformation().translate(tx=printable_offset_x, ty=printable_offset_y)) - x_left_SPINE_LIMIT = half_width * bonus_shrink_factor - x_right_SPINE_LIMIT = A4_WIDTH - x_left_SPINE_LIMIT + x_left_spine_limit = half_width * bonus_shrink_factor + x_right_spine_limit = A4_WIDTH - x_left_spine_limit if args.analyze or front_page: packet = io.BytesIO() c = reportlab.pdfgen.canvas.Canvas(packet, pagesize=A4) if args.analyze: # spine lines c.setLineWidth(0.1) - c.line(x_left_SPINE_LIMIT, A4_HEIGHT, x_left_SPINE_LIMIT, 0) - c.line(x_right_SPINE_LIMIT, A4_HEIGHT, x_right_SPINE_LIMIT, 0) + c.line(x_left_spine_limit, A4_HEIGHT, x_left_spine_limit, 0) + c.line(x_right_spine_limit, A4_HEIGHT, x_right_spine_limit, 0) if front_page: c.setLineWidth(0.2) - # cut upper left - start_up_left_left_x = x_left_SPINE_LIMIT - 0.5 * CUT_WIDTH - start_up_left_right_x = x_left_SPINE_LIMIT + 0.5 * CUT_WIDTH - middle_point_up_left_y = half_height + MIDDLE_POINT_DEPTH - end_point_up_left_y = half_height + CUT_DEPTH - c.line(start_up_left_right_x, half_height, x_left_SPINE_LIMIT, end_point_up_left_y) - c.line(x_left_SPINE_LIMIT, end_point_up_left_y, x_left_SPINE_LIMIT, middle_point_up_left_y) - c.line(x_left_SPINE_LIMIT, middle_point_up_left_y, start_up_left_left_x, half_height) - # cut lower right - start_down_right_left_x = x_right_SPINE_LIMIT - 0.5 * CUT_WIDTH - start_down_right_right_x = x_right_SPINE_LIMIT + 0.5 * CUT_WIDTH - middle_point_down_right_y = half_height - MIDDLE_POINT_DEPTH - end_point_down_right_y = half_height - CUT_DEPTH - c.line(start_down_right_left_x, half_height, x_right_SPINE_LIMIT, end_point_down_right_y) - c.line(x_right_SPINE_LIMIT, end_point_down_right_y, x_right_SPINE_LIMIT, middle_point_down_right_y) - c.line(x_right_SPINE_LIMIT, middle_point_down_right_y, start_down_right_right_x, half_height) + draw_cut(c, x_left_spine_limit, (1), half_height) + draw_cut(c, x_right_spine_limit, (-1), half_height) if args.analyze or front_page: c.save() new_pdf = pypdf.PdfReader(packet)