Welcome, guest | Sign In | My Account | Store | Cart
def find_close(w, h):
    PaperSizes = {                   # add new: ensure that first number is <= second number
            'A0': [2384, 3370],
            'A1': [1684, 2384],
            'A2': [1190, 1684],
            'A3': [842, 1190],
            'A4': [595, 842],
            'A5': [420, 595],
            'A6': [298, 420],
            'A7': [210, 298],
            'A8': [148, 210],
            'B0': [2835, 4008],
            'B1': [2004, 2835],
            'B2': [1417, 2004],
            'B3': [1001, 1417],
            'B4': [709, 1001],
            'B5': [499, 709],
            'B6': [354, 499],
            'B7': [249, 354],
            'B8': [176, 249],
            'B9': [125, 176],
            'B10': [88, 125],
            'C2': [1837, 578],
            'C3': [578, 919],
            'C4': [919, 649],
            'C5': [649, 459],
            'C6': [459, 323],
            'Invoice': [396, 612],
            'Executive': [522, 756],
            'Letter': [612, 792],
            'Legal': [612, 1008],
            'Ledger': [792, 1224],
            }

    wi = int(round(w, 0))
    hi = int(round(h, 0))
    if w <= h:
        w1 = wi
        h1 = hi
    else:
        w1 = hi
        h1 = wi

    sw = str(w1)
    sh = str(h1)
    stab = [abs(w1-s[0])+abs(h1-s[1]) for s in PaperSizes.values()]
    small = min(stab)
    idx = stab.index(small)
    f = PaperSizes.keys()[idx]

    if w <= h:
        ff = f + "-P"
        ss = str(PaperSizes[f][0]) + " x " + str(PaperSizes[f][1])
    else:
        ff = f + "-L"
        ss = str(PaperSizes[f][1]) + " x " + str(PaperSizes[f][0])

    if small == 0:                # exact fit
        return ff
    rtxt = "%s x %s (other), closest: %s = %s"   # else show best fit
    rtxt = rtxt % (sw, sh, ff, ss)
    return rtxt

History