Pergunta

Temos incorporado JasperReports em nossa aplicação para gerar relatórios, mas eu tenho sido bastante insatisfeitos com a maneira que as alças JEditorPaneHtmlMarkupProcessor escrevendo XHTML arbitrária. Por exemplo, eu precisava de saída uma lista com marcadores em um ponto, o que ele faz, mas porque ele converte em caracteres de marcador reais e novas linhas, uma bala com bastante longos resultados de texto na disposição do texto para alinhar com a bala, não com o primeira letra do texto.

Por causa disso e semelhantes problemas, eu pensei que eu poderia tentar renderização de conteúdo XHTML como um gráfico (usando o XHTML renderizador flyingsaucer). Isso me dá muito melhor controle sobre como ele se parece, mas ainda há um problema. De acordo com o The Definitive Guide to JasperReports , "All posicionamento e dimensionamento em modelos de JasperReports e documentos gerados é realizada utilizando a resolução Java padrão de 72 dpi." Afigura-se que são necessárias as letras individuais a serem prestados a ser posicionada nas coordenadas integrais. Aos 72 dpi, isso não é grande coisa, uma vez que equivale a erros de posicionamento sub-pixel na pior das hipóteses, não de qualquer conseqüência significativa. No entanto, quando renderização para PDF, JasperReports golpes lo até 300 dpi, resultando nas posições horizontal de algumas cartas de estar fora por vários pixels, às vezes.

Existe alguma maneira de obter uma melhor prestação de XHTML arbitrária, ou se há alguma maneira de fazer JasperReports realizar seu posicionamento e dimensionamento de 300 dpi, em vez de 72?

Foi útil?

Solução

I última instância resolvido isso usando um processador que não insistir em posições de caracteres integrais: a 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top