目录

iReport问题汇总

iReport无法正常启动

最近需要用到iReport报表工具,但是在启动客户端时却发现会闪退,无法正常启动。查找了资料,发现是因为iReport无法支持jdk 1.8,必须要修改配置文件,将java版本指定为1.7或之前的版本。目前官网最新的版本是5.6.0,据说有外国大神说是下个版本将会支持jdk 1.8。

找到iReport的安装目录,然后将etc/ireport.conf打开,可以看到有一行被注释的配置如下:

1
#jdkhome="path/to/jdk"

在这行注释下边加上一句:

1
jdkhome="C:\Program Files\Java\jdk1.7.0_25"

具体路径以本地安装的jdk目录为准,保存修改后重新启动iReport客户端即可。

另外补充一句,这个etc目录其实作用和Linux下的etc目录差不多,就是专门用来存放程序所需的整个文件系统的配置文件。etc不是什么缩写,是and so on的意思,来源于法语的et cetera,翻译成中文就是等等的意思。

PDF导出中文不显示

iReport PDF导出时中文不显示,报错如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Error exporting print... Could not load the following font : 
pdfFontName   : STSong-Light
pdfEncoding   : UniGB-UCS2-H
isPdfEmbedded : true
net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font : 
pdfFontName   : STSong-Light
pdfEncoding   : UniGB-UCS2-H
isPdfEmbedded : true 
    at net.sf.jasperreports.engine.export.JRPdfExporter.getFont(JRPdfExporter.java:2117) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.getChunk(JRPdfExporter.java:1906) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.getPhrase(JRPdfExporter.java:1875) 
    at net.sf.jasperreports.engine.export.SimplePdfTextRenderer.getPhrase(SimplePdfTextRenderer.java:89) 
    at net.sf.jasperreports.engine.export.SimplePdfTextRenderer.render(SimplePdfTextRenderer.java:100) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:2238) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:950) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:909) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:786) 
    at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:513) 
    at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:1174) 
    at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572) 
    at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)

这是因为使用到了宋体,而iReport的classpath中缺少了字体对应的jar包,需要加入到classpath中。iReport本身已经提供了这个jar包了,就在安装目录下:ireport\modules\ext\iTextAsian.jar

点击工具 -> 选项 -> 选择Classpath页 -> Add JAR(由于屏幕分辨率的原因可能会看不到这个按钮,可以将当前的窗口页面往右边拉大出去,就会显示这些被隐藏了的按钮。)

选择上述提及的iTextAsian.jar并确定,接着在Classpath页面中将刚刚添加的jar包打钩,然后重启iReport即可。

如果在Web应用中需要导出PDF,同样需要把这个jar包添加到Web应用的WEB_INF\lib中。

参考链接

警告
本文最后更新于 August 18, 2021,文中内容可能已过时,请谨慎使用。