JasperReport在导出为PDF时缩放图像,从而导致质量下降

Ala*_*lan 6 jasper-reports ireport

我有一个使用iReport 1.3.0设计的报告.此报告包含多个动态加载的图像.然后我JasperRunManager.runReportToPdfFile用来创建PDF.PDF中的所有内容看起来都很好,除了显示缩放的图像.

谁能告诉我我做错了什么?

谢谢.

Dav*_*vis 9

关于图像

如果将报告另存为HTML,您会注意到徽标正确显示.

像PNG这样的图像文件是光栅图像:存储为单个像素.

而PDF文件主要是矢量化的:内部元素存储为如何绘制它们的描述.这使得PDF可以扩展并且在任何规模上都清晰易读.

使用矢量格式的光栅图像可能会导致像素化效果.

可能的解决方案

您可以使用一些选项使图像与文本质量相匹配,以便于:

  • 以1200 dpi创建徽标版本,缩放400%.
  • 创建徽标的SVG版本.
  • 将图像转换为矢量格式.
  • 缩放图像300%并将分辨率更改为288 dpi.

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>
Run Code Online (Sandbox Code Playgroud)

将GIF转换为SVG

要将GIF转换为SVG,请首先尝试使用基于Web的快速工具,例如:http://vectormagic.com

转换为SVG后,您必须使用上面列出的代码来显示徽标.

分辨率和比例

看到: