2016-07-11 3 views
1

Возможно ли иметь резкие или, по крайней мере, не очень размытые диаграммы в JasperReports при экспорте в формате HTML?JasperReports SVG chart в HTML-отчете

Я использую тип рендеринга диаграммы SVG, который подходит для экспорта PDF. Экспорт HTML остается размытым.

Я попытался создать SVG-программу с помощью JFreeChart и BatikRenderer (используя скриптлет). Я получаю SVG XML, который я установить в качестве строковой переменной в jrxml файл и использовать его в образе элемента:

<image scaleImage="FillFrame"> 
    <reportElement positionType="Float" x="401" y="566" width="159" height="124" uuid="1baa80f7-3151-4fb8-be85-140059e9e28e"/> 
    <imageExpression> 
     <![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromText($V{Chart})]]> 
    </imageExpression> 
</image> 

При таком подходе изображение все еще размыто (позже я заметил, все изображения ресурсов в экспорте HTML в формате .png) ,

Используя приведенный ниже код по-прежнему создает PNG изображение в экспорте HTML

net.sf.jasperreports.renderers.BatikRenderer.getInstanceFromText("<svg xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\" version=\"1.0\" width=\"100\" height=\"100\"><circle cx=\"50\" cy=\"50\" r=\"40\" stroke=\"green\" stroke-width=\"4\" fill=\"yellow\" /></svg>") 

Есть ли способ использовать сгенерированный SVG XML внутри отчета Jasper или любое другое решение, чтобы получить четкие изображения диаграмм в HTML-файл? Я также рассматривал возможность использования сгенерированного SVG XML внутри компонента TextField с разметкой HTML, но я не думаю, что это возможно со всеми HTML-тегами, только базовыми, такими как <b> и <br>.

ответ

3

Начиная с JasperReports 6.2.2 экспортер HTML выводит SVG для элементов диаграммы, если установлено net.sf.jasperreports.chart.render.type=svg, а для BatikRenderer изображений.

BatikRenderer фактически устарела, вы можете использовать вместо net.sf.jasperreports.renderers.SimpleDataRenderer.getInstance(byte[]) (если у вас есть SVG как String вам нужно что-то передать, как $V{Chart}.getBytes("UTF-8")).

Для более старых версий вы можете улучшить качество растрированного SVG, установив свойство net.sf.jasperreports.image.dpi (в jasperreports.properties) примерно на 300. Но это все равно будет не таким, как наличие фактического SVG, поэтому рассмотрите возможность перехода на последние JasperReports.

+0

Вау, я использовал версию 6.2.1 ... большое спасибо! Даже с рендерером Batik создаются изображения svg. Если кому-то нужно обновить Jastersoft Studio, это будет так же просто, как и в Help -> Check for updates – Nikola

Смежные вопросы