JasperReport масштабирует изображения при экспорте в PDF, таким образом теряя качество - PullRequest
6 голосов
/ 11 января 2011

У меня есть отчет, разработанный с помощью iReport 1.3.0. Этот отчет включает в себя несколько изображений, которые загружаются динамически. Затем я использую JasperRunManager.runReportToPdfFile для создания PDF. Все в PDF выглядит отлично, за исключением изображений, которые выглядят масштабированными.

Может кто-нибудь сказать мне, что я делаю не так?

Спасибо.

Ответы [ 2 ]

9 голосов
/ 13 января 2011

Об изображениях

Если вы сохраните отчет в формате HTML, вы заметите, что логотип отображается правильно.

Файлы изображений, такие как PNG, являются растровыми изображениями: сохраняются в виде отдельных пикселей.

Принимая во внимание, что файлы PDF в основном векторизованы: элементы внутри хранятся как описания того, как их рисовать. Это позволяет PDF-файлам масштабироваться и быть разборчивым в любом размере.

Использование растрового изображения в векторном формате, вероятно, приведет к пикселизированному эффекту.

Возможные решения

У вас есть несколько вариантов, чтобы изображения соответствовали качеству текста в порядке простоты:

  • Создание версии логотипа с разрешением 1200 т / д и масштабированием на 400%.
  • Создание SVG-версии логотипа.
  • Преобразование изображения в векторный формат.
  • Масштабирование изображения 300% и изменение разрешения до 288 точек на дюйм.

1200 DPI версия

Изображение будет выглядеть четким до увеличения примерно 400%.

SVG версия

Изображение будет выглядеть четким при любом разрешении. Замените обычный <image...> XML следующим кодом (обязательно отрегулируйте ширину и высоту соответственно):

<image hAlign="Center" vAlign="Middle">
 <reportElement x="0" y="0" width="179" height="66"/>
 <imageExpression class="net.sf.jasperreports.engine.JRRenderable"><![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("/path/to/logo.svg"))]]></imageExpression>
</image>

Конвертировать GIF в SVG

Чтобы преобразовать GIF в SVG, сначала попробуйте быстрый веб-инструмент, например: http://vectormagic.com

После преобразования в SVG для отображения логотипа вам потребуется использовать код, указанный выше.

Разрешение и Масштаб

См:

2 голосов
/ 08 декабря 2011

Начиная с версии 4.0.1, разрешение растрового изображения должно сохраняться, и вы также можете улучшить разрешение диаграмм при использовании других параметров экспорта (xls, rtf, html и т. Д.) По умолчанию установлено очень низкое значение 72 dpi.

В параметрах iReport> Свойства JasperReport редактировать

net.sf.jasperreports.image.dpi 300

http://jasperforge.org/projects/jasperreports/tracker/view.php?id=3411

...