2015-06-12 2 views
1

У меня проблема с сообщением о яшме: Я создал отчет с iReport 5.6.0 и работает нормально. Он содержит только параметры. Моя проблема связана с java: когда я пытаюсь создать pdf-файл из моего класса java, он создает файл со всеми белыми размерами 1 kb. Из IReport он работает правильно. Я попытался скомпилировать файл .jasper от iReport, а также от java. Идентификатор компиляции выполнен правильно, но когда я пытаюсь передать параметры, это неверно. Создание PDF-файла успешно завершено, но страница все белая. Helppppp !!!Белый отчет с сообщением о яшме от Java

p.s. Извините меня, возможно, плохой английский !!

Мой класс Java:

package it.minervaice.report; 

import it.minervaice.utility.T; 

import java.io.IOException; 
import java.util.HashMap; 
import java.util.Map; 

import javax.servlet.ServletOutputStream; 
import javax.servlet.http.HttpServletResponse; 

import net.sf.jasperreports.engine.JRException; 
import net.sf.jasperreports.engine.JasperExportManager; 
import net.sf.jasperreports.engine.JasperFillManager; 
import net.sf.jasperreports.engine.JasperPrint; 

public class ReportUtility {    
String JASPER_REPORT_FOLDER   = "C:\\Users\\Minerva\\Desktop\\Dropbox\\workspace\\MinervaICE\\WebContent\\report\\"; 
String JASPER_FILENAME_MAIN_DATE = "distintaCompletaPerData"; 
String JASPER_FILENAME_MAIN_ID  = "distintaCompletaPerID"; 
String JASPER_FILENAME_CHILD  = "dettaglioRicetta"; 

JasperPrint jp = null; 

public JasperPrint getReportCompilatoPerFlusso() { 
    return jp; 
} 


// II° STEP: rendering del report 
public boolean renderingReportDaID(Integer id_distinta) { 
    //Connection conn = DBUtility.getConnection(); 

    try { 
     //Parametri da passare al jasper. 
     Map<String, Object> parameters = new HashMap<>(); 

     parameters.put("id_distinta", id_distinta); 

     T.nota("inizio rendering"); 
     jp = JasperFillManager.fillReport(JASPER_REPORT_FOLDER + "java.jasper", parameters); 
     T.nota("fine rendering"); 

    } catch (JRException e) { 
     T.nota("errore rendering"); 
     e.printStackTrace(); 
     T.nota("errore rendering"); 
    } 
    return true; 
} 



// III° STEP: creazione pdf 
public boolean creaPDF(String nomePDF) { 
    if (nomePDF.equals("")) { 
     nomePDF = "report"; 
    } 

    // generazione del file PDF 
    try { 
     T.nota("inizio creazione pdf"); 
     JasperExportManager.exportReportToPdfFile(jp, JASPER_REPORT_FOLDER + nomePDF + ".pdf"); 
     T.nota("fine creazione pdf"); 
    } catch (JRException e) { 
     T.nota("errore creazione pdf"); e.printStackTrace();T.nota("errore creazione pdf"); 
    } 

    return true; 
} 


// III° bis STEP: scarica pdf con la finestra di download 
public boolean downloadPDF(String nomePDF, HttpServletResponse resp) { 
    if (nomePDF.equals("")) { 
     nomePDF = "report"; 
    } 

    // generazione del file PDF 
    try { 
     T.nota("inizio creazione download pdf"); 

     String header = String.format("Attachment; Filename=\"%s.pdf\"", nomePDF); 
     ServletOutputStream sos=resp.getOutputStream(); 
     resp.setContentType("APPLICATION/OCTET-STREAM"); 
     resp.setHeader("Content-Disposition", header); 
     JasperExportManager.exportReportToPdfStream(jp, sos); 
     sos.close(); 
     T.nota("fine creazione download pdf"); 
    } catch (JRException e) { 


    } catch (IOException e) { 
     T.nota("errore creazione download pdf"); 
     e.printStackTrace(); 
     T.nota("errore creazione download pdf"); 
    } 

    return true; 
} 


public static void main(String[] args) { 

    ReportUtility ru = new ReportUtility(); 
    //ru.creaJasper(); 
    ru.renderingReportDaID(1); 
    ru.creaPDF("ciccio"); 



} 

} 

ответ

0

Может быть пустым значением, которое вы передаете в Jasper отчет через объект HashMap. Поэтому Jasper Report создает файл PDF без данных. Вы должны проверить, что значения передаются или нет. Беллоу код привязки и запроса в отчете Jasper: query-

"SELECT * FROM testTable where id=$P{EMPID}"

. Heare EMPID - это параметр, созданный в отчете Jasper. Теперь код Java, чтобы вызвать отчет Jasper и передавая значение для него, как показано ниже ....

HashMap<String, Object> hm=new HashMap<String, Object>(); 
hm.put("EMPID", objEmp.getEmpid()); 

String jasperreportpath="salaryslip.jrxml";  
String jasperReport =JasperCompileManager.compileReportToFile(jasperreportpath); 

String exportPath=output_file_location_path+File.separator+"outputFileName.pdf"; 
JasperExportManager.exportReportToPdfFile(jasperPrint, exportPath); 

Помните, что ключ в объекте HashMap и параметра в Jasper Доклад такие же «EmpId».

Смежные вопросы