diff --git a/generate.py b/generate.py index 93e1a90..c41cccc 100755 --- a/generate.py +++ b/generate.py @@ -29,6 +29,7 @@ if __name__ == "__main__": parser.add_argument("-o", "--output", type=str, help="Output file, defaults to 'qrcodes.pdf'.", default="qrcodes.pdf") parser.add_argument("-s", "--size", type=int, help="Ticket height, defaults to 150.", default=150) parser.add_argument("-m", "--margin", type=int, help="Margin (depends on printer), defaults to 0.", default=0) + parser.add_argument("-g", "--gap", type=int, help="Gap between tickets, defaults to 0.", default=0) args = parser.parse_args() @@ -53,16 +54,16 @@ if __name__ == "__main__": used_usernames = set() ticket_height = args.size - qr_code_size = ticket_height/2 + qr_code_size = ticket_height/1.5 logo = svg2rlg("img/karaoke-outline.svg") - scaling_factor = ticket_height/logo.height + scaling_factor = ticket_height/logo.height/2 logo.scale(scaling_factor, scaling_factor) logo_width = logo.width*scaling_factor logo_height = logo.height*scaling_factor ticket_width = logo_width + qr_code_size - codes_per_row = floor((page_width-args.margin*2)/ticket_width) - codes_per_col = floor((page_height-args.margin*2)/ticket_height) + codes_per_row = floor((page_width-args.margin*2)/(ticket_width+args.gap)) + codes_per_col = floor((page_height-args.margin*2)/(ticket_height+args.gap/2)) if codes_per_col == 0 or codes_per_row == 0: raise Exception(f"There is not enough space on A4 page to fit a QR code of size {ticket_width}x{ticket_height}!") codes_per_page = codes_per_row*codes_per_col @@ -79,15 +80,20 @@ if __name__ == "__main__": code_width = bounds[2] - bounds[0] code_height = bounds[3] - bounds[1] + current_x = args.margin+(ticket_width+args.gap)*x + current_y = args.margin+(ticket_height+args.gap/1.2)*y + drawing = Drawing(ticket_height, ticket_height, transform=[qr_code_size/code_width, 0, 0, qr_code_size/code_height, 0, 0]) drawing.add(qr_code) - renderPDF.draw(logo, pdf, args.margin+ticket_width*(x%codes_per_row), args.margin+ticket_height*(y%codes_per_col)) - pdf.drawString(args.margin+ticket_width*(x%codes_per_row), args.margin+ticket_height*(y%codes_per_col), url) + renderPDF.draw(logo, pdf, current_x, current_y+35) + + pdf.setFont("Helvetica", 12) + pdf.drawRightString(current_x+logo_width, current_y+16, "Hier anmelden →") - pdf.drawString(args.margin+ticket_width*(x%codes_per_row), args.margin+ticket_height*(y%codes_per_col)+logo_height, "Hier Code scannen") - pdf.drawString(args.margin+ticket_width*(x%codes_per_row), args.margin+ticket_height*(y%codes_per_col)+logo_height-10, "und Song anmelden!") + pdf.setFont("Helvetica", 8) + pdf.drawRightString(current_x+logo_width+qr_code_size-7, current_y, url) - renderPDF.draw(drawing, pdf, args.margin+ticket_width*(x%codes_per_row)+logo_width, args.margin+ticket_height*(y%codes_per_col)) + renderPDF.draw(drawing, pdf, current_x+logo_width, current_y+5) generated_codes += 1 if generated_codes >= args.number: pdf.save() diff --git a/img/karaoke-outline.svg b/img/karaoke-outline.svg index 97f23c7..f991ac5 100644 --- a/img/karaoke-outline.svg +++ b/img/karaoke-outline.svg @@ -1,3 +1,43 @@ - \ No newline at end of file + +