lordluke_80 0 Newbie Poster

hi everyone. i'm tryng to use Reportlab to output an invoice on a
simple Django app. it seems quite difficult to do simple things like
this. here's my code:

def print_pdf(fattura, soggetto, buffer=None):

    import time
    from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_RIGHT, TA_JUSTIFY
    from reportlab.lib.pagesizes import letter
    from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image, ParagraphAndImage
    from reportlab.lib.styles import ParagraphStyle, getSampleStyleSheet
    from reportlab.lib.units import inch

    static_files_dir_path = settings.SITE_ROOT+'/'+settings.CURRENT_APP_NAME+settings.STATIC_URL+'user/images/';
    img_file = 'Logo_effetti.jpg'
    img_height = 75
    img_width = 99

    str_data_fatt = (fattura.data).strftime('%d/%m/%Y')
    fattura_file_name = str('fattura_'+str_data_fatt+'_'+str(fattura.soggetto)+'.pdf')

    img = Image(static_files_dir_path+img_file, img_width, img_height)

    styles = getSampleStyleSheet()
    normalStyle = styles["Normal"]

    nfattura_ptext = 'numero fattura: '+str(fattura.numerofattura)

    if buffer:
    doc = SimpleDocTemplate(buffer, pagesize=letter)
    else:
    doc = SimpleDocTemplate(fattura_file_name, pagesize=letter)
    elems = []

    intestazione_studio_ptext = 'Studio AAA<br/>Via XXX 99<br/> 20202 DDDDDDD'
    prestazioni = []

    elems.append(Paragraph(intestazione_studio_ptext, styles["Normal"]))
    elems.append(Spacer(1,12))
    elems.append(Spacer(1,12))
    elems.append(Spacer(1,12))

    elems.append(Paragraph(nfattura_ptext, styles["Normal"]))
    cliente_ptext = soggetto.nome+" "+soggetto.cognome+"<br/>"+soggetto.indirizzo+", "+soggetto.cap+" "+soggetto.citta+"<br/>C.F.: "+soggetto.codfisc
    if(soggetto.is_privato):
    cliente_ptext += "P.IVA: "+soggetto.piva

    prezzo = Prezzo.objects.get(pk=1)

    if fattura.riabmot > 0:
    prestazioni.append({'nome':'Rieducazione motoria','qta': fattura.riabmot,'p_unit': prezzo.riabmot,
    'p_finale': fattura.riabmot * prezzo.riabmot,'id':'riabmot'})
    if fattura.riabacq > 0:
    prestazioni.append({'nome':'Riabilitazione in acqua','qta': fattura.riabacq,'p_unit': prezzo.riabacq,
    'p_finale': fattura.riabacq * prezzo.riabacq,'id':'riabacq'})
    if fattura.riabdom > 0:
    prestazioni.append({'nome':'Riabilitazione domiciliare','qta': fattura.riabdom,'p_unit': prezzo.riabdom,
    'p_finale':fattura.riabdom * prezzo.riabdom,'id':'riabdom'})
    if fattura.osteo > 0:
    prestazioni.append({'nome':'Osteopatia','qta': fattura.osteo,'p_unit': prezzo.osteo,
    'p_finale':fattura.osteo * prezzo.osteo,'id':'osteo'})
    if fattura.masso > 0:
    prestazioni.append({'nome':'Massoterapia','qta': fattura.masso,'p_unit': prezzo.masso,
    'p_finale':fattura.masso * prezzo.masso,'id':'masso'})
    if fattura.diate > 0:
    prestazioni.append({'nome':'Diatermia','qta': fattura.diate,'p_unit': prezzo.diate,
    'p_finale':fattura.diate * prezzo.diate,'id':'diate'})
    if fattura.laser > 0:
    prestazioni.append({'nome':'Laserterapia','qta': fattura.laser,'p_unit': prezzo.laser,
    'p_finale':fattura.laser * prezzo.laser,'id':'laser'})
    if fattura.usman > 0:
    prestazioni.append({'nome':'US Manuale','qta': fattura.usman,'p_unit': prezzo.usman,
    'p_finale':fattura.usman * prezzo.usman,'id':'usman'})
    if fattura.usacq > 0:
    prestazioni.append({'nome':'US in acqua','qta': fattura.usacq,'p_unit': prezzo.usacq,
    'p_finale':fattura.usacq * prezzo.usacq,'id':'usacq'})
    if fattura.tens > 0:
    prestazioni.append({'nome':'TENS','qta': fattura.tens,'p_unit': prezzo.tens,
    'p_finale':fattura.tens * prezzo.tens,'id':'usacq'})
    if fattura.ets > 0:
    prestazioni.append({'nome':'Elettroterapia stimolante','qta': fattura.ets,'p_unit': prezzo.ets,
    'p_finale': fattura.ets * prezzo.ets,'id':'ets'})
    if fattura.magneto > 0:
    prestazioni.append({'nome':'Magnetoterapia','qta': fattura.magneto,'p_unit': prezzo.magneto,
    'p_finale':fattura.magneto * prezzo.magneto,'id':'magneto'})
    if fattura.iono > 0:
    prestazioni.append({'nome':'Ionoforesi','qta': fattura.iono,'p_unit': prezzo.iono,
    'p_finale':fattura.iono * prezzo.iono,'id':'iono'})

    totale = 0
    totale += fattura.diate * prezzo.diate
    totale += fattura.ets * prezzo.ets
    totale += fattura.iono * prezzo.iono
    totale += fattura.tens * prezzo.tens
    totale += fattura.laser * prezzo.laser
    totale += fattura.magneto * prezzo.magneto
    totale += fattura.masso * prezzo.masso
    totale += fattura.usacq * prezzo.usacq
    totale += fattura.usman * prezzo.usman
    totale += fattura.osteo * prezzo.osteo
    totale += fattura.riabacq * prezzo.riabacq
    totale += fattura.riabdom * prezzo.riabdom
    totale += fattura.riabmot * prezzo.riabmot

    prestazioni_instestazione_ptext = "Prestazione N.Sedute Pr. unitario (euro) Pr. finale (euro)"
    elems.append(Paragraph(prestazioni_instestazione_ptext, styles["Normal"]))
    elems.append(Spacer(1,12))
    for p in prestazioni:
    prestazione_ptext = p['nome']+" "+str(p['qta'])+" "+str(p['p_unit'])+" "+str(p['p_finale'])
    elems.append(Paragraph(prestazione_ptext, styles["Normal"]))


    elems.append(Spacer(1,12))
    elems.append(Spacer(1,12))
    totale_ptext = "Importo totale: "+str(totale)+" euro"
    elems.append(Paragraph(totale_ptext, styles["Normal"]))

    doc.build(elems);
    return buffer;

with this code, my header image is always rendered on page center. i
want to insert it on the right (like that: http://i.imgur.com/0Ahww.png)
or even better having image on the right and text on the left. i've
tried in many ways (setting the hAlign or oAlign propetry of img,
inserting image in a ParagraphAndImage flowable) but always i got
errors or the same alignment. what is the right way?

i've tried to look at Reportlab documentation but seems not so clear
to me and poor of code snippets.

tnx to everyone,

LuKe