jasperreports-5.6 + jaspersoftstudio-5.6 生成pdf 文件中文无法正常显示问题

jrxml字段属性设置:

<textElement>
   <font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
</textElement>

在工程lib中引入itextasian-1.5.2.jar文件,注意该文件的目录结构为com/lowagie/text/pdf/fonts/*,最新的itext-asian.jar包不是该结构无法正常使用,

JAVA示例代码:

    /****数据库连接****/
    public static Connection getConnection() {
        Connection conn = null;
        String driver = "net.sourceforge.jtds.jdbc.Driver";
        String url = "jdbc:jtds:sqlserver://127.0.0.1:1433/CODE-WH";
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url,"sa", "123");
            return conn;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) throws Exception {
        String fileName = "D:/Coffee.jrxml";
        long startTime = System.currentTimeMillis();
        // 将报表的定义文件*.jrxml编译成*.jasper文件
        String jasperFile = JasperCompileManager.compileReportToFile(fileName);
        // 向*.jasper文件中填充数据,这一步将生产出*.jrprint文件
        String jrprintFile = JasperFillManager.fillReportToFile(jasperFile,
                null, getConnection());
        System.out.println("jrprintFile=="+jrprintFile);
        // 将.jrprint文件转换成HTML格式
        JasperExportManager.exportReportToHtmlFile(jrprintFile);
        // 将.jrprint文件转换成PDF格式
        JasperExportManager.exportReportToPdfFile(jrprintFile);
        // 将.jrprint文件转换成XML格式
        //JasperExportManager.exportReportToXmlFile(jrprintFile, false);
        // 将.jrprint文件转换成XLS格式(即Excel文件),需要用到POI类库.
        
        File sourceFile = new File(jrprintFile);
        JasperPrint jasperPrint = (JasperPrint) JRLoader.loadObject(sourceFile);
        File destFile = new File(sourceFile.getParent(), jasperPrint.getName()
                + ".xls");
        JRXlsExporter exporter = new JRXlsExporter();
        exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
        exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(destFile));
        SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
        configuration.setOnePagePerSheet(false);
        exporter.setConfiguration(configuration);
        exporter.exportReport();
        
        long endTime = System.currentTimeMillis();
        long time = (endTime - startTime) / 1000;
        System.out.println("success with " + time + " s");
    }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。