2010-11-24 34 views
2

J'essaie d'utiliser reportlab, mais je trouve le guide utilisateur pas assez clair .. (peut-être juste moi)paragraphes numérotés, avec reportlab


Je le code suivant

for item in content: 
     text = item.name 
     p = Paragraph(text,style,'*') 

et il rend exactement comme prévu.

Mais si je veux au nombre au lieu de balles?

Le guide d'utilisation est vraiment vague sur cette situation ...

Répondre

2

Le User Guide a une partie à ce sujet. Si je comprends bien, vous devez utiliser une balise <seq/> à la place d'un point pour la numérotation triviale (chaque occurrence en compte un). Pour une numérotation plus complexe, voir pages 73/74.

exemple, pour autant que je comprends, vous mettez les choses comme <b> </b> pour Texteet gras <seq/> en ligne:

from reportlab.platypus import Paragraph 

formatted_text = 
    "Some example text. <seq/>First. <seq/>Second. <seq/>Third" 
formatted_para = Paragraph(your_formatted_text, your_paragraph_style_instance) 

Vous devrez expérimenter un peu avec des sauts de ligne. Celui-ci n'en aura pas. question Old

+0

Oui, j'ai déjà lu ça. Mais je ne sais toujours pas comment le faire. Quelqu'un peut-il me donner un exemple de code basé sur le code que j'ai écrit dans la question? – dolma33

+0

Merci. Cette astuce a fonctionné comme prévu. Je pense que je me sens un peu déçu de reportlab, parce que je pensais à un autre type de solution ... Peut-être quelque chose comme 'p = Paragraph (texte, style, '')' ... Quoi qu'il en soit, merci de votre aide moi. – dolma33

+0

Eh bien, il faut encore générer du code TeX, lorsque la mise en page super précise et le réglage de type n'est pas la principale préoccupation. Surtout pour les tables et les trucs de forme. – knitti

1

, je sais, mais en fonction de votre code d'exemple, vous pouvez faire quelque chose comme ceci:

paragraph_number = 1 
for item in content: 
    text = item.name 
    p = Paragraph(text,style,str(paragraph_number)) 
    paragraph_number += 1 

Vous pouvez remplacer simplement la puce avec tout ce que vous aimez.