设计好报表后,把*.jasper文件拷贝到工程中,可以开始编码了,但是上一篇写的只是设计器中预览出现中文,而程序生成的PDF报表依旧不能显示中文,这篇将会做个补充.
先填代码吧:
package cn.com.gkhb.ireport.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRPdfExporter;
/**
* 导入报表为pdf文件
*/
public class ExportDemo {
/**
* 报表模板位置
*/
private final static String jasperfile = "E:/myeclipse/IreportDemo/WebRoot/WEB-INF/jasperfiles/pieChart.jasper";
/**
* 目标文件位置
*/
private final static String desc = "G:/download/font/pie_chart_demo.pdf";
/**
* register database driver for mysql
*/
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
HashMap hm = new HashMap();
try {
// Fill the report using an empty data source
JasperPrint print = JasperFillManager.fillReport(jasperfile, hm, connectionProvider());
// Create a PDF exporter
JRExporter exporter = new JRPdfExporter();
// JRExporter exporter = new JRHtmlExporter();
// Configure the exporter (set output file name and print object)
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, desc);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
// Export the PDF file
exporter.exportReport();
} catch (JRException e) {
e.printStackTrace();
System.exit(1);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
/**
* database connection provider
* @return
*/
protected static Connection connectionProvider() {
Connection connection = null;
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "";
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException ex) {
ex.printStackTrace();
}
return connection;
}
/*
* jpeg
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters_header, dataSource);
out = response.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, out);
if (printType==0) //if pdf stream
{
JasperExportManager.exportReportToPdfStream(jasperPrint, out);
} else { // if jpeg image stream
int pageIndex = 0;
BufferedImage pageImage = new BufferedImage(jasperPrint.getPageWidth() + 1, jasperPrint.getPageHeight() + 1, BufferedImage.TYPE_INT_RGB);
JRGraphics2DExporter exporter = new JRGraphics2DExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRGraphics2DExporterParameter.GRAPHICS_2D, pageImage.getGraphics());
exporter.setParameter(JRExporterParameter.PAGE_INDEX, new Integer(pageIndex));
exporter.exportReport();
ImageIO.write(pageImage, "jpeg", out);
}
out.close();
*/
}
这个时候如果需要PDF生成后显示中文,需要把安装的字体打包成JAR导入classpath中去,步骤如下:
进入ireport安装目录下,然后进入:\ireport\fonts文件夹,用将文件夹下所有内容直接打包成zip,修改后缀为jar,加入到项目classpath就OK了,此时应该就能生成pdf中有中文显示了
((注:转载须标明此文来源连接
http://xiaomy.iteye.com/blog/1139595
,否则视为侵权)
)