bonjour,
Je voudrais generer un document pdf a partir de donnees.
J'ai de suite pense a reportlab, car je l'ai deja utilise par le passe.
Je suis un peu rouille avec reportlab, et je ne sais pas trop comment traiter mon probleme.
J'aimerai avoir quelques conseils, pistes pour pouvoir avancer.
Description du probleme:
Objectif: generer automatiquement un pdf compact contenant les donnees d'entree.
un genre de tableau qui s'adapte au contenu.
Input:
- une liste ordonnee de string. par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ["Toto%s"%i for i in range(1000)]- probablement une police et une taille de police.
Ouput: un pdf (landscape) multicolonne
Contraintes:
- Odre des donnees:
les donnees sont ordonnees dans l'input, elles devront l'etre dans l'output.
un string d'input sera ecrit sur une ligne du pdf (multicolonne),
Sur chaque page, l'ordre d'ecriture sera du haut vers le bas (dans une colonne), puis de gauche a droite pour l'ordre des colonnes.
Puis, on continue de pages en pages jusqu'a epuisement des donnees.- Mise en page:
la police, la taille de police et le contenu des strings piloteront le nombre de lignes et de colonnes de chaque page.
En gros, la largeur de colonne est le max de la largeur du contenu de cette colonne.
Et on ecrit le maximum de lignes par colonne.
On peut mettre un separateur de colonne pour la visibilite.
Ce n'est pas hyper complique et il doit bien y avoir des solutions pour ca.
Pour le moment, jai 2 pistes:
- "a la main"
en gros, je m'appuie sur les dimensions de la page et je place mes string a la main avec des coordonnees.
Je crois qu'il existe une fonction qui me retourne les dimensions du rectangle contenant un string ecrit en fonction de la police et de sa taille.
A partir de la, c'est juste un jeu de coordonnees.
Le hic, c'est que pour le moment, je ne retrouve plus cette fonction et qu'il y a peut etre plus simple.- avec les "table" de platypus
en me rafraichissant sur reportlab, j'ai vu qu'il y avait des objets evolues qui pourraient avoir le comportement dont j'ai besoin.
J'ai donc essaye de faire une table,
mais je n'arrive pas trop a la manipuler pour obtenir le resultat voulu.
Est-ce que vous auriez des pistes ? des suggestions ?
merci.
Partager