在这两天,总在抽出时间研究这只外国进口的“黑猫”--ireport 0.5.x,发现要想很好的使用确实不容易,特别是它的资料太少了,昨天,我建立一个最简单的报表,在ireport中的那个JRviwer previwer中一切预料正常,但是我在jsp中调用时候,报告文件读取错误,查了半天,在网上论坛中找了半天资料,才发现原来0。5。x的版本都有这个问题,就是报表在运行中,编译好的序列化文件不带后缀jasper,你需要修改,给它添加这个后缀,并在jsp中调用这个编译好的*.jasper文件。
在jsp中的代码如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="dori.jasper.engine.*" %>
<%@ page import="dori.jasper.engine.util.*" %>
<%@ page import="dori.jasper.engine.export.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%
Connection conn=null;
//以下忽略得到数据库连接过程//……
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bookshop","sa","1");
}
catch (SQLException ex) {
ex.printStackTrace();
}catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
//……
File reportFile = new File(application.getRealPath("/report/booksjasper.jasper"));Map parameters = new HashMap();
//parameters.put("ReportTitle", "Address Report");
//parameters.put("BaseDir", reportFile.getParentFile());
byte[] bytes =
JasperRunManager.runReportToPdf(
reportFile.getPath(),
parameters,
conn
);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();%>
这个问题虽然解决了。
但是有一个
严重的问题
没有解决,那就是中文问题,虽然,我在ireport中的JRviwer previwer中预览正常,但是我在pdf中确无法显示中文,但是
为什么我的pdf无法显示中文??其中标签的属性中的font name 我选择了"宋体"那个pdf font name下拉框中没有中文选项,该怎么办。
我把最下边的pdf encoding 的复选框选上了,也选择了 编码为chinese simple.
但是在pdf中预览的时候还是无法显示中文。疯了,大家给我看看这个设置的对吗? 如果有错误,麻烦大家给我留言好吗?谢谢!