我有一份使用iReport 1.3.0设计的报告。此报告包含多个动态加载的图像。然后我使用JasperRunManager.runReportToPdfFile
创建PDF。除了显示缩放的图像外,PDF中的所有内容都很好。
谁能告诉我我做错了什么?
感谢。
答案 0 :(得分:9)
如果您将报告另存为HTML,您会发现徽标显示正确。
PNG等图像文件是光栅图像:存储为单个像素。
PDF文件主要是矢量化的:内部元素存储为如何绘制它们的描述。这使得PDF可以扩展并且在任何规模上都清晰可见。
使用矢量格式的光栅图像可能会导致像素化效果。
您可以选择使图像与文本质量相匹配,以便于:
图像看起来很清晰,直到大约400%变焦。
每个分辨率的图像都会很清晰。使用以下代码替换普通<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,请先尝试使用基于网络的快速工具,例如:http://vectormagic.com
转换为SVG后,您必须使用上面列出的代码来显示徽标。
请参阅:
答案 1 :(得分:2)
从版本4.0.1开始,应保留光栅图像分辨率,并且在使用其他导出选项(xls,rtf,html等)时也可以提高图表的分辨率。默认值只有非常低的72 dpi。
在iReport选项中&gt; JasperReport属性编辑
net.sf.jasperreports.image.dpi 300
http://jasperforge.org/projects/jasperreports/tracker/view.php?id=3411
答案 2 :(得分:0)
在较新的版本中,您需要通过在 net.sf.jasperreports.image.dpi
文件夹中定义一个 jasperreports.properties
文件来全局配置 WEB-INF/classes/
属性:
net.sf.jasperreports.image.dpi=300
还需要重启服务器。