Je génère des PDF avec le paquet Python xhtml2pdf. Le résultat n'est pas optimal. J'utilise des divs flottants afin de placer des images et du texte sur la page. En HTML, cela fonctionne mais après le rendu PDF, les images et le texte sont placés les uns en dessous des autres, ce qui n'est pas ce que je veux. En surfant sur le web, j'ai appris que le paquet Report Lab utilisé par xhtml2pdf ne peut pas gérer les divs flottants. Existe-t-il une solution de contournement ? J'ai essayé le rendu webkit via QT mais les PDFs résultants sont de mauvaise qualité, c'est-à-dire que l'espacement des caractères est complètement faux.
Réponse
Trop de publicités?Si vous ne parvenez pas à obtenir les résultats dont vous avez besoin avec xhtml2pdf, je vous suggère d'utiliser directement ReportLab. ReportLab contient un support pour RML, le langage de balisage propre à ReportLab qui vous permet de créer facilement du texte formaté, et dispose d'une bibliothèque de support appelée Platypus qui rend la mise en page assez simple en utilisant des objets Python pour représenter les parties du document et les mises en page.
La raison pour laquelle vous rencontrez des problèmes, d'ailleurs, est que xhtml2pdf doit essentiellement agir comme un moteur de rendu HTML qui sort vers le PDF plutôt que vers l'écran directement. De même qu'il a fallu beaucoup de temps et d'efforts pour créer de bons moteurs de rendu pour les navigateurs, il semble que xhtml2pdf nécessitera beaucoup d'efforts pour atteindre une qualité similaire. Cela ne veut pas dire que xhtml2pdf est mauvais, juste qu'il faudra du temps pour qu'il soit aussi bon que le rendu dans un navigateur, et si la sortie PDF pour elle-même est ce qui vous intéresse vraiment, je pense qu'utiliser directement ReportLab est un meilleur choix.