2009-09-22 7 views
1

Nous avons incorporé JasperReports dans notre application pour générer des rapports, mais je suis plutôt insatisfait de la façon dont le JEditorPaneHtmlMarkupProcessor gère l'écriture de XHTML arbitraire. Par exemple, je devais produire une liste à puces à un moment donné, ce qu'elle fait, mais parce qu'elle le convertit en caractères à puces réels et en retours à la ligne, une puce avec un texte assez long entraîne l'empaquetage du texte première lettre du texte. Pour cette raison et des problèmes similaires, j'ai pensé que je pourrais essayer de rendre le contenu XHTML comme un graphique (en utilisant le moteur de rendu XHTML flyingsaucer). Cela me donne un meilleur contrôle sur son apparence, mais il y a toujours un problème. Selon le Le Guide définitif de JasperReports, "Tout positionnement et dimensionnement dans les modèles JasperReports et les documents générés est effectué en utilisant la résolution Java par défaut de 72 dpi." Il semble que les lettres individuelles à rendre doivent être positionnées à des coordonnées entières. A 72 dpi, ce n'est pas un gros problème, car cela revient à des erreurs de positionnement de sous-pixel au pire, sans conséquences significatives. Cependant, lors du rendu au format PDF, JasperReports le souffle jusqu'à 300 ppp, ce qui fait que les positions horizontales de certaines lettres sont parfois désactivées par plusieurs pixels.Rendu XHTML arbitraire avec JasperReports

Existe-t-il un moyen d'obtenir un meilleur rendu de XHTML arbitraire, ou est-il possible de faire en sorte que JasperReports effectue son positionnement et son dimensionnement à 300 dpi au lieu de 72?

Répondre

0

Je finalement résolu ce problème en utilisant un moteur de rendu qui n'a pas insisté sur les positions de caractère intégral: JEditorPane de Swing:

JEditorPane pane = new JEditorPane(); 
pane.setBorder(null); 
pane.setSize(w, h); 
pane.setContentType("text/html"); 
pane.setEditable(false); 
pane.setText(html); 
pane.paint(g2);