Reply - Raw
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")