import os import sys from PIL import Image, ImageDraw, ImageOps DPI = 300 BGFILL = (215,71,71) width, height = int(8.27 * DPI), int(11.7 * DPI) # A4 at 300dpi page = Image.new('RGB', (width, height), 'white') card = Image.open("Russekort.png") cw, ch = card.size wnum = int(width/cw) hnum = int(height/ch) wleft = width - (cw*wnum) hleft = height - (ch*hnum) print([(width, height), (cw, ch), (wnum, hnum), (wleft, hleft)]) draw = ImageDraw.Draw(page) draw.rectangle(((wleft/2)-32,(wleft/2)-32,width-(wleft/2)+32,height-(hleft/2)+32), fill=BGFILL) for i in range(hnum): y = int((hleft/2) + (i*ch)) for j in range(wnum): x = int((wleft / 2) + (j*(cw))) print((x, y)) page.paste(card, box=(x, y)) back = ImageOps.mirror(page) for i in range(hnum+1): y = int((hleft/2) + (i*ch)) draw.line((0,y, (wleft/2)-9,y), fill="black", width=1) draw.line((width-(wleft/2)-9,y, width,y), fill="black", width=1) for j in range(wnum+1): x = int((wleft / 2) + (j*(cw))) draw.line((x,0, x,(hleft/2)-9), fill="black", width=1) draw.line((x,height-(hleft/2)+8, x,height), fill="black", width=1) #page.paste(Image.open(group[1]), box=(int(width/2.+.5), 0)) #page.paste(Image.open(group[2]), box=(0, int(height/2.+.5))) #page.paste(Image.open(group[3]), box=(int(width/2.+.5), int(height/2.+.5))) page.save('front.jpeg', quality=100, dpi=(DPI,DPI)) back.save('back.jpeg', quality=100, dpi=(DPI,DPI)) os.system("convert front.jpeg back.jpeg page.pdf")