导出到.pdf JAVA时,该文件显示多个



嗨,我试着把数据导出到.pdf中,所以当我查看"详细信息"时,它会显示一组数据,详细信息会导出到.pdf,当数据导出到pdf时,数据会变成一个文件。但是当我尝试导出多个像这样的文件时

在此处输入图像描述

但这不是同一个数据,而是来自数据库的不同数据,我想问一下这是怎么发生的,如何解决??

这是bean上的代码:

@PostConstruct
public void init(){
this.setLazyMasterReportDataModel(new LazyMasterReportDataModel()); 
}
public JasperPrint exportTo() {     
if(this.listReportMaster == null || this.listReportMaster.isEmpty()){           
FacesMessage messageFailed = new FacesMessage(FacesMessage.SEVERITY_INFO,"Info","No data found");           
RequestContext.getCurrentInstance().showMessageInDialog(messageFailed);         
return null;
}
String path = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/resources/report/PRPKReportPDF.jasper");     
JRBeanCollectionDataSource  beanCollectionDataSource = new JRBeanCollectionDataSource(this.listReportMaster);       
try {           
JasperPrint jasperPrint = JasperFillManager.fillReport(path, null, beanCollectionDataSource);           
return jasperPrint;         
} catch (JRException e) {           
e.printStackTrace();
return null;
}
}   
public void exportToPdf(ActionEvent actionEvent){   
if(this.lazyMasterReportDataModel != null){
System.out.println("masuk exporttopdf");
String sql = ((LazyMasterReportDataModel) this.lazyMasterReportDataModel).getSqlReportPrint();
List<Object> listObject = ((LazyMasterReportDataModel) this.lazyMasterReportDataModel).getObjectSqlListReportPrint();
this.listReportMaster = reportMasterPRPKController.getPRPKForReport(sql, listObject);           
JasperPrint jasperPrint = exportTo();
String fileName = "PRPKNew_Report".concat("_").concat(".pdf");
if(jasperPrint != null) reportMasterPRPKController.exportToPDF(fileName, jasperPrint);
else System.out.println("jasperprint null");
}else{
System.out.println("keluar exporttopdf");
FacesMessage messageFailed = new FacesMessage(FacesMessage.SEVERITY_INFO,"Info","No data found");           
RequestContext.getCurrentInstance().showMessageInDialog(messageFailed);
}
}

控制器上的代码

public void exportToPDF(String fileName, JasperPrint jasperPrint){
try{            
System.out.println("masuk controller exportpdf");
HttpServletResponse httpServletResponse = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpServletResponse.addHeader("Content-disposition", "attachment; filename=".concat(fileName));
ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
servletOutputStream.flush();
servletOutputStream.close(); 
FacesContext.getCurrentInstance().responseComplete();   
System.out.println("selesai print");
} catch (JRException | IOException e) {         
e.printStackTrace();
}       
}

前谢谢

exportToPdf方法中的变量listObject似乎包含传递给报表生成的对象列表。

对于这些对象中的每一个,都将生成一个详细标注栏。如果此列表中只有一个详细标注栏和100个对象,则pdf导出中将生成100个标注栏。

如果你只想显示一个细节带,我建议你只为你的pdf生成提供一个对象。

有关的更多信息,请参阅此关于详细波段的问题

相关内容

最新更新