2009-09-22 2 views
1

Мы создали JasperReports в нашем приложении для создания отчетов, но я был весьма недоволен тем, как JEditorPaneHtmlMarkupProcessor обрабатывает произвольный XHTML. Например, мне нужно было вывести маркированный список в одну точку, что он делает, а потому, что он преобразует его в фактические символы и символы новой строки, пуля с довольно длинным текстом приводит к тому, что текстовое обертывание выравнивается с пулей, а не с первая буква текста.Оказание произвольного XHTML с JasperReports

Из-за этих и подобных проблем, я думал, что я могу попробовать отображать контент XHTML в качестве графического изображения (с помощью средства визуализации XHTML для flyingsaucer). Это дает мне намного лучший контроль над тем, как это выглядит, но есть еще одна проблема. Согласно Полное руководство по JasperReports: «Все позиционирование и размер в шаблонах JasperReports и сгенерированные документы выполняются с использованием стандартного разрешения Java 72 dpi». Похоже, что отдельные буквы, которые нужно визуализировать, должны располагаться в интегральных координатах. При 72 dpi это не имеет большого значения, так как в худшем случае это приводит к ошибкам позиционирования подпикселей, а не к каким-либо значимым последствиям. Однако при рендеринге в PDF JasperReports удаляет его до 300 dpi, в результате чего горизонтальные позиции некоторых букв иногда выходят на несколько пикселей.

Есть ли способ улучшить рендеринг произвольного XHTML или есть способ сделать JasperReports выполнить его позиционирование и размер при 300 dpi вместо 72?

ответ

0

я в конечном счете решить это с помощью визуализации, который не настоять на целочисленных позициях характер: JEditorPane от 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); 
Смежные вопросы