Le rapport Jasper exporte des données vides au format PDF lorsqu'il y a plus de données.

StackOverflow https://stackoverflow.com/questions/1641884

  •  10-07-2019
  •  | 
  •  

Question

J'ai un rapport à exporter au format Excel, PDF et Word à l'aide de rapports jasper. J'utilise le fichier xml comme source de données pour le rapport, mais lorsque les données augmentent, le rapport jasper exporte un fichier vide uniquement pour le format PDF. Lorsque je réduis le contenu des données, il exporte les données disponibles correctement. y a-t-il une limitation à la taille de pdf? , comment pouvons-nous gérer la taille des rapports jasper de java?

Mon jrxml est vraiment gros, je ne peux donc pas l'ajouter ici, j'ai ajouté mon code java que j'utilise pour exporter le contenu:

JRAbstractExporter exporter = null;
if (format.equals("pdf")) {
    exporter = new JRPdfExporter();
    jasperPrint.setPageWidth(Integer.parseInt(pWidth));
} else if (format.equals("xls")) {
    exporter = new JRXlsExporter();

} else if (format.equals("doc")) {
    jasperPrint.setPageWidth(Integer.parseInt(pWidth));
}
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
        jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
        outputStream_);
exporter.exportReport();
contents = outputStream_.toByteArray();
response.setContentType("application/" + format);
response.addHeader("Content-disposition",
        "attachment;filename=" + name.toString() + "." + format);
Était-ce utile?

La solution

Essayez de définir la longueur du contenu:

response.setContentLength(outputStream_.toByteArray().length)

Voir si cela résout votre problème.

Autres conseils

Lorsqu'il n'y a pas de date, vous pouvez essayer ce code

       jasperReport = JasperCompileManager.compileReport(sourceFileName);
       jasperPrint = JasperFillManager.fillReport(jasperReport,jasperParameter,new JREmptyDataSource()); 
       JasperExportManager.exportReportToPdfFile(jasperPrint, "D://.pdf")

Même si vous ne possédez aucune source de données et si son rapport de données statique est important, JREmptyDataSource est important, sinon vous risquez d'obtenir un rapport vierge.

Vérifiez ce lien pour plus d'informations https://stackoverflow.com/a/5334415/649451

- À votre santé!

peut-être que vos données ne sont pas définies dans le rapport.

essayez ce code lors de la génération du rapport pour éviter de masquer les sections quand aucune donnée:

JasperReport jasperReport = (JasperReport)JRLoader.loadObject ("report1.jasper");
**jasperReport.setWhenNoDataType(WhenNoDataTypeEnum.ALL_SECTIONS_NO_DETAIL);**

acclamations!.

J'ai eu le même problème. Pour un grand nombre d'enregistrements, pdf obtenait un rapport vierge.

Ce problème a été résolu en définissant JRParameter.IS_IGNORE_PAGINATION sur false.

Une méthode qui a fonctionné pour moi dans le traitement des données volumineuses et des rapports jasper consiste à insérer tout d'abord les données dont vous avez besoin dans une table de base de données, puis à créer une instruction SQL sur le rapport jasper qui rejoindra la table créée avec les données que vous avez créées. avoir besoin. Cela met plus de travail sur la base de données et moins sur la bibliothèque jasper. Voici un exemple de table pouvant être créée pour stocker les données de rapport.

CREATE TABLE RE_EMPLOYEE(
EMPLOYEE_ID INT UNIQUE NOT NULL
COMPANY_ID INT UNIQUE NOT NULL
REPORT_NAME VARCHAR(20)
UNIQUE_USER_ID INT UNIQUE NOT NULL
PRIMARY KEY (EMPLOYEE_ID, COMPANY_ID)
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top