2010-09-28 42 views
6

J'ai une liste de texte à ajouter à un cadre reportlabreportlab - comment introduire saut de ligne si le paragraphe est trop long pour une ligne

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

Si la légende est trop long, le texte à la la fin n'est pas visible du tout. Comment introduire des sauts de ligne dans cette situation.

+0

Je recommande ans à ce poste à [email protected], listes de diffusion sont probablement pas très cool, mais la liste de diffusion ReportLab est toujours la meilleure source d'information :) – juanefren

Répondre

0
style.wordWrap = 'LTR' 

Désolé si je mal compris cela comme lettre, mais le paragraphe lui-même est « mot enveloppé », par rapport au document pagesize également.

Il y a une valeur userguide de « CJC » pour la langue asiatique, peut-être vos paramètres faire le texte à rechercher la ligne de finition selon quelque chose d'autre, comme la séparation de mots des langues asiatiques. Réglez-le sur Aucun devrait faire la chose.

9

Ceci peut ou ne peut pas s'appliquer mais je viens d'apprendre que \n que j'utilise normalement pour introduire de nouvelles lignes dans les chaînes Python est ignoré par l'objet Paragraphe de ReportLab.

A partir d'un mailing list J'ai appris que dans Paragraphe vous pouvez utiliser le code HTML <br/> pour introduire la nouvelle ligne à la place.

Cela fonctionne bien pour moi.

2

Comme PolyGeo dit, vous pouvez utiliser <br /> pour ajouter de nouvelles lignes à un paragraphe.

Convertir de nouvelles lignes <br /> balises

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

code Mise à jour

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