2 votes

Existe-t-il une solution de contournement pour obtenir des divs flottants dans Report Lab ?

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.

1voto

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X