jasperreport处理带有中文的报表

china0man 2009-04-09 02:38:00
jasperreport处理时,我在iReport里进行了下面设置
1. 设置的字体的Font Name需要是能显示中文的,比如宋体、SansSerfi
2. 设置PDF Font Name为STSong-Light
3. 设置PDF Encoding为UniGB-UCS2-H (Chinese Simplified)
4. lib中包含iTextAsian.jar文件
jsp的代码为
File reportFile = new File(this.getServletContext().getRealPath("/report/buspwdata.jasper"));
String url = "jdbc:Cache://localhost:1972/WEBSOURCE";
try {
Class.forName("com.intersys.jdbc.CacheDriver");
Map parameters = new HashMap();
//"SQLSTR"是报表中定义的一个参数名称,其类型为String 型
parameters.put("SQLSTR","select * from DHCCA_Business.DHCCA_BusPWData where BusPWData_Rowid>0 and BusPWData_MonthDr=7");
Connection conn = DriverManager.getConnection(url,"_SYSTEM","sys");
//JasperRunManager.runReportToHtmlFile(reportFile.getPath(),parameters,conn);
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters,conn);
//System.out.println(reportFile.getPath());
//response.sendRedirect("report/buspwdata.html");
response.setContentType("application/pdf");
response.setContentLength(bytes.length);

ServletOutputStream outStream = response.getOutputStream();
outStream.write(bytes, 0, bytes.length);
outStream.flush();
outStream.close();
out.clear();
out = pageContext.pushBody();
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
运行后报错为
The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Could not load the following font :
pdfFontName : STSong-Light
pdfEncoding : UniGB-UCS2-H
isPdfEmbedded : true
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

net.sf.jasperreports.engine.JRRuntimeException: Could not load the following font :
pdfFontName : STSong-Light
pdfEncoding : UniGB-UCS2-H
isPdfEmbedded : true
net.sf.jasperreports.engine.export.JRPdfExporter.getFont(JRPdfExporter.java:1777)
net.sf.jasperreports.engine.export.JRPdfExporter.getChunk(JRPdfExporter.java:1625)
net.sf.jasperreports.engine.export.JRPdfExporter.getPhrase(JRPdfExporter.java:1608)
net.sf.jasperreports.engine.export.JRPdfExporter.exportText(JRPdfExporter.java:1996)
net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:697)
net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:657)
net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:546)
net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:333)
net.sf.jasperreports.engine.JasperExportManager.exportReportToPdf(JasperExportManager.java:188)
net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:205)
org.apache.jsp.buspwdata_jsp._jspService(buspwdata_jsp.java:65)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
请问这个问题怎么解决?
...全文
531 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
awusoft 2009-05-11
  • 打赏
  • 举报
回复
把两个jar包放到tomcat/server/lib下边去
vicky_313789480 2009-04-09
  • 打赏
  • 举报
回复
关注一下,我最近也在研究这个东西,向你学习。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧