FattView/fpdf/tests/issue33.py


Home Back

"Test issue 33 (Cannot import GIF files that don't have transparency)"

from fpdf import FPDF, FPDF_VERSION

import os, tempfile
try:
    import Image
except:
    from PIL import Image

def genbar():
    # bg
    bg = Image.new("L", (112, 1), 1)
    bg = bg.resize((112, 11))
    # stripes
    vbarnum = [0x4F43484B, 0xEE90D642, 0xF11A2735, 0xD71A]
    vbar = Image.new("L", (112, 1), 1)
    pix = vbar.load()
    pos = 0
    for b in vbarnum:
        for i in range(32):
            pix[pos, 0] = 0 if (b & 1) else 1
            b = b >> 1
            pos += 1
            if pos >= 112: break    
    vbar = vbar.resize((112, 31), Image.NEAREST)
    # digit
    dignum = [0x398, 0x6dc, 0x61a, 0x31b, 0x1bf, 0x6d8, 0x7d8]
    dbar = Image.new("L", (16, 7), 1)
    pix = dbar.load()
    pos = 0
    ypos = 0
    for b in dignum:
        for i in range(16):
            pix[pos, ypos] = 0 if (b & 1) else 1
            b = b >> 1
            pos += 1
        ypos += 1
        pos = 0
    # result
    bar = Image.new("L", (114, 44), 2)
    bar.paste(vbar, (1, 1))
    bar.paste(bg, (1, 32))
    for i in range(4):
        bar.paste(dbar, (35 + i * 12, 34))
    return bar


plane = genbar()
palette = (0,0,0, 255,255,255) + (128,128,128)*254
img = Image.fromstring("P", plane.size, plane.tostring())
img.putpalette(palette)

f = tempfile.NamedTemporaryFile(delete = False, suffix = ".gif")
gif1 = f.name
f.close()
f = tempfile.NamedTemporaryFile(delete = False, suffix = ".gif")
gif2 = f.name
f.close()


img.save(gif1, "GIF")

img.save(gif2, "GIF", transparency = 1)


pdf=FPDF()
pdf.compress = False
pdf.add_page()
pdf.set_font('Arial', '', 16)
pdf.write(8, "Transparency")
pdf.ln()
pdf.write(8, "    Transparency")
pdf.ln()
pdf.write(8, "        Transparency")
pdf.ln()
pdf.image(gif1, x = 15, y = 15)

pdf.write(8, "Transparency")
pdf.ln()
pdf.write(8, "    Transparency")
pdf.ln()
pdf.write(8, "        Transparency")
pdf.ln()
pdf.image(gif2, x = 15, y = 39)

fn = 'issue33.pdf'
pdf.output(fn,'F')


os.unlink(gif1)
os.unlink(gif2)

try:
    os.startfile(fn)
except:
    os.system("xdg-open \"%s\"" % fn)

Powered by Code, a simple repository browser by Fabio Di Matteo