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