Отчеты Jasper в формате PDF на китайском языке

#java #database

#java #База данных

Вопрос:

В моем проекте я использую отчеты jasper для pdf и Excel. Отчеты отлично работают, когда я экспортирую английские символы из базы данных, но когда я экспортирую китайские символы, отчет отлично работает для Excel, но китайские символы не отображаются в формате pdf.

У меня установлен Adobe Reader 11 с языковыми пакетами для упрощенного и традиционного китайского языков.

Это код, в котором вызывается функция reportfinal.build(), которая создает отчеты:

  public String OrgReport(){
        List<String> a = new ArrayList<String>();
        a.add("ORG_NAME");
        a.add("ORG_CODE");
        a.add("REGISTRATION_NO");
        a.add("CONTACT_PERSON");
        a.add("EMAIL_OFC");
        a.add("PHONE_NO_OFC");
        a.add("AI_STATUS_ID");

        List<String> colname = new ArrayList<String>();
        colname.add("Organisation Name");
        colname.add("Organisation Code");
        colname.add("Registration No");
        colname.add("Contact Person");
        colname.add("Email");
        colname.add("Contact No");
        colname.add("Status");



        String tabname="ORG_MASTER_MSYS";
        List<Map<String,?>> OrgData= new ArrayList<Map<String,?>>();
        OrgData=organisationManager.getOrgdata(a,tabname);


    List<ColumnValuemMapperDTO> columnValuemMapperDTOlist;
        columnValuemMapperDTOlist=new ArrayList<ColumnValuemMapperDTO>();
         for(int i =0;i<OrgData.size();i  ){
             ColumnValuemMapperDTO ob=new ColumnValuemMapperDTO();
             ob.setColumnValueMap(OrgData.get(i));
             columnValuemMapperDTOlist.add(ob);
         }
        UserDTO userDto = (UserDTO) getServletRequest().getSession()
                .getAttribute("LoginVO");
        String Username1 = "";

         Username = Username1.concat(""   userDto.getFname()   " "
                      userDto.getLname()   "");

        AdhocCustomizerReportWeb reportfinal = new AdhocCustomizerReportWeb();

        String reportName = "Organisation_Master_Grid";
        String Layout = "land";
        String beforedate = "Notdefined";
        String currentdate = "Notdefined";

        String reportHead = "Organisation Master";
        String filepath;
        try {


            reportfinal.build( colname, columnValuemMapperDTOlist,
                    reportName, formatId, reportHead, Layout, Username,
                    beforedate, currentdate);
            filepath = reportfinal.getFilepath();
            int index = filepath.lastIndexOf("\");

            filename = filepath.substring(index   1);
         fileInputStream = new FileInputStream(new File(filepath));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return ERROR;
        }

     return SUCCESS;
 

Далее я также предоставляю код для функции сборки:-

 import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

import net.sf.dynamicreports.adhoc.AdhocManager;
import net.sf.dynamicreports.adhoc.configuration.AdhocColumn;
import net.sf.dynamicreports.adhoc.configuration.AdhocConfiguration;
import net.sf.dynamicreports.adhoc.configuration.AdhocReport;
import net.sf.dynamicreports.adhoc.report.DefaultAdhocReportCustomizer;
import net.sf.dynamicreports.jasper.base.export.JasperPdfExporter;
import net.sf.dynamicreports.jasper.builder.JasperReportBuilder;
import net.sf.dynamicreports.jasper.builder.export.Exporters;
import net.sf.dynamicreports.jasper.builder.export.JasperHtmlExporterBuilder;
import net.sf.dynamicreports.jasper.builder.export.JasperPdfExporterBuilder;
import net.sf.dynamicreports.jasper.builder.export.JasperXlsExporterBuilder;
import net.sf.dynamicreports.jasper.builder.export.JasperXlsxExporterBuilder;
import net.sf.dynamicreports.jasper.constant.JasperProperty;
import net.sf.dynamicreports.report.builder.ReportBuilder;
import net.sf.dynamicreports.report.datasource.DRDataSource;
import net.sf.dynamicreports.report.exception.DRException;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.data.JRMapCollectionDataSource;
import net.sf.jasperreports.engine.export.JRXlsExporter;

import com.vin.mdm.service.report.ColumnValuemMapperDTO;
import com.vin.mdm.web.VinMDMActionSupport;

public class AdhocCustomizerReportWeb extends VinMDMActionSupport {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public String reportName1 = null;

    public String reportHead1 = null;
    public String username = null;
    public String layout = null;
    public String Beforedate = null;
    public String Currentdate = null;
    String filepath = null;
    String filename = null;

    public void build(List<String> p_columnNamesList,
            List<ColumnValuemMapperDTO> p_columnValueMapperList,
            String reportName, String formatId, String reportHead,
            String pagelayout, String Username, String beforedate,
            String currentdate) throws IOException {

        try {

            AdhocConfiguration configuration = new AdhocConfiguration();
            AdhocReport report = new AdhocReport();

            configuration.setReport(report);

            List<Map<String, ?>> dsFinalMap = new ArrayList<Map<String, ?>>();

            for (String columnName : p_columnNamesList) {

                AdhocColumn column = new AdhocColumn();
                column.setName(columnName);

                report.addColumn(column);
            }

            for (com.vin.mdm.service.report.ColumnValuemMapperDTO columnValueMapper : p_columnValueMapperList) {

                dsFinalMap.add(columnValueMapper.getColumnValueMap());

            }
            JRMapCollectionDataSource dataSource = new JRMapCollectionDataSource(
                    dsFinalMap);
            JRBeanCollectionDataSource datahtml = new JRBeanCollectionDataSource(
                    dsFinalMap);



            reportName1 = reportName;
            reportHead1 = reportHead;
            layout = pagelayout;
            username = Username;
            Beforedate = beforedate;
            Currentdate = currentdate;
            if (formatId.equals("Pdf")) {

                SimpleDateFormat sim = new SimpleDateFormat("ddMMyyyyhhmmssaa");

                JasperReportBuilder reportBuilder = null;

                reportBuilder = AdhocManager.createReport(
                        configuration.getReport(), new ReportCustomizer());


                File tempFile = File.createTempFile("Report_"   reportName
                          "_"   sim.format(new Date()), ".pdf");
                JasperPdfExporterBuilder pdfExporter = Exporters.pdfExporter(
                        tempFile)

                .setIgnorePageMargins(false).setEncrypted(false).setCharacterEncoding("Identity-H");
                reportBuilder


                        .setReportName(reportName)

                        .setDataSource(dataSource).toPdf(pdfExporter);

                filepath = tempFile.getAbsolutePath();
 

}

Комментарии:

1. Вы не даете нам ничего, на что можно было бы положиться. Опубликуйте некоторый соответствующий код.

2. Пожалуйста, помогите мне , с проблемой выше, я опубликовал соответствующий код .

3. Неужели это будет отложено навсегда ?