设计好报表后,把*.jasper文件拷贝到工程中,可以开始编码了,但是上一篇写的只是设计器中预览出现中文,而程序生成的PDF报表依旧不能显示中文,这篇将会做个补充.
先填代码吧:
Java代码
1. package cn.com.gkhb.ireport.demo;
2.
3. import java.sql.Connection;
4. import java.sql.DriverManager;
5. import java.sql.SQLException;
6. import java.util.HashMap;
7.
8. import net.sf.jasperreports.engine.JRException;
9. import net.sf.jasperreports.engine.JRExporter;
10. import net.sf.jasperreports.engine.JRExporterParameter;
11. import net.sf.jasperreports.engine.JasperFillManager;
12. import net.sf.jasperreports.engine.JasperPrint;
13. import net.sf.jasperreports.engine.export.JRPdfExporter;
14.
15. /**
16. * 导入报表为pdf文件
17. */
18. public class ExportDemo {
19. /**
20. * 报表模板位置
21. */
22. private final static String jasperfile = "E:/myeclipse/IreportDemo/WebRoot/WEB-INF/jasperfiles/pieChart.jasper";
23.
24. /**
25. * 目标文件位置
26. */
27. private final static String desc = "G:/download/font/pie_chart_demo.pdf";
28.
29. /**
30. * register database driver for mysql
31. */
32. static {
33. try {
34. Class.forName("com.mysql.jdbc.Driver");
35. } catch (ClassNotFoundException ex) {
36. ex.printStackTrace();
37. }
38. }
39.
40. @SuppressWarnings("unchecked")
41. public static void main(String[] args) {
42. HashMap hm = new HashMap();
43. try {
44. // Fill the report using an empty data source
45. JasperPrint print = JasperFillManager.fillReport(jasperfile, hm, connectionProvider());
46.
47. // Create a PDF exporter
48. JRExporter exporter = new JRPdfExporter();
49. // JRExporter exporter = new JRHtmlExporter();
50.
51. // Configure the exporter (set output file name and print object)
52. exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, desc);
53. exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
54.
55. // Export the PDF file
56. exporter.exportReport();
57. } catch (JRException e) {
58. e.printStackTrace();
59. System.exit(1);
60. } catch (Exception e) {
61. e.printStackTrace();
62. System.exit(1);
63. }
64. }
65.
66. /**
67. * database connection provider
68. * @return
69. */
70. protected static Connection connectionProvider() {
71. Connection connection = null;
72. String url = "jdbc:mysql://localhost:3306/test";
73. String user = "root";
74. String password = "";
75. try {
76. connection = DriverManager.getConnection(url, user, password);
77. } catch (SQLException ex) {
78. ex.printStackTrace();
79. }
80. return connection;
81. }
82.
83. /*
84. * jpeg
85. JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters_header, dataSource);
86. out = response.getOutputStream();
87. JasperExportManager.exportReportToPdfStream(jasperPrint, out);
88.
89. if (printType==0) //if pdf stream
90. {
91. JasperExportManager.exportReportToPdfStream(jasperPrint, out);
92. } else { // if jpeg image stream
93. int pageIndex = 0;
94. BufferedImage pageImage = new BufferedImage(jasperPrint.getPageWidth() + 1, jasperPrint.getPageHeight() + 1, BufferedImage.TYPE_INT_RGB);
95. JRGraphics2DExporter exporter = new JRGraphics2DExporter();
96. exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
97. exporter.setParameter(JRGraphics2DExporterParameter.GRAPHICS_2D, pageImage.getGraphics());
98. exporter.setParameter(JRExporterParameter.PAGE_INDEX, new Integer(pageIndex));
99. exporter.exportReport();
100. ImageIO.write(pageImage, "jpeg", out);
101. }
102. out.close();
103. */
104. }