1. ireport生成中文PDF报表时,需设置: 1)增加itext中文包在lib目录下 2)pdf encoding 选 UniGB-UCS2-H (Chinese Simplified) pdf font name 选 stsong-light (可以使用View->Report Fonts一次解决) 2. ireport有时侯不能显示数据库中数据的解决方式: 1)每一个element:设置:print when details overflow ;stretch overflow 2)字段高度不够
3. dori.jasper.engine.JRException: Error loading object from file : D:\jakarta-tomcat-4.0.1\jakarta-tomcat-4.0.1\webapps\safe\safe1.jasper
新的jasperreport的版本是0.5.2,ireport用的是0.5.0,你把你的搜索路径里面的库换一下就好了
4. 一段测试代码: package test;
/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: est</p> * @author mgp * @version 1.0 */ import dori.jasper.engine.*; import dori.jasper.engine.util.*; import java.sql.*; import java.util.*; import dori.jasper.engine.JasperReport; import java.util.Date; import java.text.SimpleDateFormat; public class report { public report() { } public static void main(String[] args){ JRResultSetDataSource jrds=null; JasperPrint jasperPrint=null; Map reportParams = new HashMap(); ResultSet rs=null; Connection con = null; Statement stmt = null; String sql = "select * from wms_sku"; String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@192.168.0.254:1521:server1"; try { JasperReport jasperReport = (JasperReport) JRLoader.loadObject( "C:/est/helix/helix/reports/testdao.jasper"); Class.forName(driver); con = DriverManager.getConnection(url, "****", "****"); stmt = con.createStatement(); rs = stmt.executeQuery(sql); if(!rs.next()) return ; jrds = new JRResultSetDataSource(rs); jasperPrint = JasperFillManager.fillReport( jasperReport, reportParams, jrds ); JasperPrintManager.printReportToPdfFile(jasperPrint, "c:/abcd.pdf"); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } catch (JRException e) { e.printStackTrace(); } } }
5. 利用mysql数据库,生成pdf报表,在Tomcat中显示: <%@ page import="dori.jasper.engine.*" %> <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <%@ page import="java.sql.*" %> <% File reportFile = new File(application.getRealPath("/reports/mydoc5.jasper")); Map parameters = new HashMap(); Class.forName("org.gjt.mm.mysql.Driver").newInstance(); String url ="jdbc:mysql://localhost/clients?user=sa&password=&useUnicode=true&characterEncoding=GB2312"; Connection conn= DriverManager.getConnection(url); 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(); %> note: 1)<%@ page contentType="text/html;charset=gb2312"%> 这句话不能有,不然会提示下载 2)从数据库中获取中文数据Encoding=GB2312是必须的 3)由于ireport使用的jasperreport版本与jasperreport发行的版本不一致,所以会造成很多错误,例如: dori.jasper.engine.JRException: Error loading object from file : D:\jakarta-tomcat-4.0.1\jakarta-tomcat-4.0.1\webapps\safe\safe1.jasper

|