Pregunta

Hemos incorporado JasperReports en nuestra aplicación para generar informes, pero hemos sido bastante insatisfecho con la forma en que el JEditorPaneHtmlMarkupProcessor se encarga de escribir XHTML arbitraria. Por ejemplo, tenía que generar una lista con viñetas en un momento dado, lo que lo hace, pero debido a que la convierte en caracteres de bala real y saltos de línea, una bala con los resultados de texto bastante largo en el ajuste de texto para alinearse con la bala, no con la primera letra del texto.

Debido a este y otros problemas, pensé que podría intentar la representación XHTML contenido como un gráfico (utilizando el procesador de XHTML flyingsaucer). Esto me da mucho mejor control sobre cómo se ve, pero todavía hay un problema. De acuerdo con La guía definitiva para JasperReports , "Todo de posición y tamaño de las plantillas de JasperReports y documentos generados se realiza utilizando la resolución de Java por defecto de 72 dpi." Parece que se requiere que las letras individuales a ser prestados para ser colocado en las coordenadas integrales. A los 72 dpi, esto no es un gran problema, ya que equivale a errores de posicionamiento de subpíxeles en el peor, no de ninguna consecuencia significativa. Sin embargo, cuando la prestación a PDF, JasperReports sopla hasta 300 dpi, resultando en las posiciones horizontales de algunas cartas estar fuera por varios píxeles a veces.

¿Hay alguna manera de conseguir una mejor prestación de XHTML arbitraria, o hay alguna manera de hacer JasperReports realizan su posición y tamaño a 300 dpi en lugar de 72?

¿Fue útil?

Solución

I en última instancia, lo resolvió mediante el uso de un procesador que no insisten en posiciones integrales de caracteres: la 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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top