2010-09-28 13 views
6

Ho una lista di testo da aggiungere ad un telaio ReportLabReportlab - come introdurre interruzione di linea, se il paragrafo è troppo lungo per una linea

style = getSampleStyleSheet()['Normal'] 
style.wordWrap = 'LTR' 
style.leading = 12 
for legend in legends: 
    elements.append(Paragraph(str(legend),style)) 

Se la leggenda è troppo lungo, il testo nella parte la fine non è affatto visibile. Come introdurre interruzioni di riga in questa situazione.

+0

vi consiglio yo per inviare questo per [email protected], mailing list, probabilmente sono non molto bello, ma la mailing list di ReportLab è ancora la migliore fonte di informazioni :) – juanefren

risposta

0
style.wordWrap = 'LTR' 

Scusate se ho frainteso questo come lettera, ma Paragrafo sé è "parola avvolto", in relazione a documentare pagesize anche.

C'è il valore di userguide di "CJK" per la lingua asiatica, possibilmente la tua impostazione esegue il testo per cercare il traguardo in base a qualcos'altro, come la suddivisione di parole in lingue asiatiche. Impostalo su Nessuno dovrebbe fare la cosa.

9

Questo può o non può essere applicato ma ho appena appreso che \n che normalmente utilizzo per introdurre nuove righe in stringhe Python viene ignorato dall'oggetto Paragrafo di ReportLab.

Da un mailing list Ho appreso che all'interno di Paragrafo è possibile utilizzare l'HTML <br/> per introdurre invece la nuova riga.

Che funziona bene per me.

2

Come dice PolyGeo, è possibile utilizzare <br /> per aggiungere nuove linee a un paragrafo.

Convertire nuove linee di <br /> tag

replace('\n','<br />\n') 

codice aggiornato

for legend in legends: 
     content = str(legend).replace('\n','<br />\n') 
     elements.append(Paragraph(content, style))