首页 > 编程知识 正文

ireport报表开发详解,spring实战pdf

时间:2023-05-06 14:44:40 阅读:141120 作者:3966

33559 www.bilibili.com/video/b v1 ty 4y 1a 77 u? p=1(经典IDEA版Java项目医疗实战-传智健康) )。

java典型的PDF格式报告的导出通常有两种格式。

1.iText iText是用于生成PDF文档的java类库。 除了可以生成PDF或rtf文档外,还可以使用iText将XML和Html文件转换为PDF文件。 安装iText非常方便,下载iText.jar文件后,只需将iText.jar路径添加到系统的CLASSPATH中,即可在程序中使用iText类库。

实施POM.XML : dependencygroupidcom.low agie/groupidartifactiditext/artifactidversion2.1.7/version/dependency document.open (; 文档. add (new paragraph (hello itext ) ); document.close (; } catch (文件格式扩展跟踪) { e.printStackTrace ); } catch (文档扩展) { e.printStackTrace ); } } 2. JasperReports JasperReports可以转换PDF、HTML或XML格式,通常与Jaspersoft Studio (模板设计器)结合使用以导出PDF报告

POM.XML : dependencygroupidnet.SF.jasperreports/groupidartifactidjasperreports/artifactidversion6.4.0/version

public void test ((stringjrxmlpath=' d : ) idea projects (.src\ mainresources\ demo.) ) srcmar string jasperpath=' d :\ idea projects\ .src\ main\ resourcesdemo.jasper '; //编译模板jaspercompilemanager.compilereporttofile (jrxml path,jasperPath )//结构数据HashMap paramters=new HashMap paramters.put (报告日期,(2021-06-16 ) ); paramters.put(company,) xuyu ); ArrayList maplist=newarraylistmap (; HashMap map1=new HashMap (; map1.put('name )、' xuyu ); map1.put(address ),) xian ); HashMap map2=new HashMap (; map2.put('name )、' xuyu ); map2.put(address ),) xian ); list.add(map1; list.add(map2; //填充数据的jasperpathjasperprint=jasper file manager.fill report (jasper path,paramters,newjrbeancollectiondatasource (ler ) ) //输出文件stringpdfpath=' d :\ test.pdf '; jasperexportmanager.exportreporttopdffile (jasper print,pdfPath

); } //基于数据库方式填充数据 public void test1() throws ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/health",root,root); String jrxmlPath = "D:\ideaProjects\...\src\main\resources\demo.jrxml"; String jasperPath = "D:\ideaProjects\...\src\main\resources\demo.jasper"; //模板编译,编译为后缀为jasper的二进制文件 JasperCompileManager.compileReportToFile(jrxmlPath,jasperPath); //构造数据 Map paramters = new HashMap(); paramters.put("company","xuyu"); //填充数据 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,paramters,connection); //输出文件 String pdfPath="D:\test.pdf"; JasperExportManager.exportReportToPdfFile(jasperPrint,pdfPath); }     JasperReport原理:

        JRXML->Jasper->Jrprint->Exporter->PDF/HTML/XML

        JRXML:报表填充模板,本质是一个xml文件

        Jasper:由JRXML模板编译成的二进制文件,用于代码填充数据

        Jrprint:当用数据填充完Jasper后生成的对象,用于输出报表

        Exporter:报表输出的管理类,可以指定要输出的报表为何种格式

        PDF/HTML/XML:报表形式

    JasperReports到处pdf报表开发流程:

        1.制作报表模板

        2.模板编译

        3.构造数据

        4.填充数据

        5.输出文件

    模板设计器Jaspersoft Studio:

        为一个图形化的报表设计工具,可以非常方便的设计出PDF报表模板文件(其实就是一个xml文件),再结合JasperReports使用,就可以渲染出PDF文件。

        下载地址:https://community.jaspersoft.com/commounity-download

        具体的软件使用详见百度。

    结合JasperReports输出报表:

        使用Jaspersoft Studio设计好模板(一个使用JDBC数据源,一个使用JavaBean数据源方式进行数据填充)(见上面代码)后,结合JasperReports完成报表输出。

        注意:以上方式中文无法正常显示,需要修复:

        在Jaspersoft Studio中打开对应的jrxml文件,选中中文相关元素,统一将字体设置为“华文宋体”并将修改后的jrxml文件重新复制到项目中,字体需导入相关字体库

    在spring项目中使用JasperReports:

    1.把jrxml文件放到resources目录下

    2.导入maven坐标(见上面)

    3.将解决中文乱码的文件复制到resources目录下

@RestController@RequestMapping("/report")public class PDFController { @Autowired private ReportService reportService; //导出PDF文件 @RequestMapping("/exportBusinessReport") public Result exportReportToPdfFile(HttpServletRequest request, HttpServletResponse response){ try { //取出返回结果数据,准备将报表数据写入到PDF文件中 Map<String, Object> result = reportService.getBusinessReportData(); List<Map> hotSetmeal = (List<Map>) result.get("hotSetmeal"); //动态获取模板文件绝对磁盘路径 String jrxmlPath = request.getSession().getServletContext().getRealPath("template") + File.separator + "xxx.jrxml"; String jasperPath = request.getSession().getServletContext().getRealPath("template") + File.separator + "xxx.jasper"; //编译模板 JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath); //填充数据 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath, result, new JRBeanCollectionDataSource(hotSetmeal)); ServletOutputStream out = response.getOutputStream(); response.setContentType("application/pdf"); response.setHeader("content-Disposition", "attachment;filename=report.pdf"); //输出文件 JasperExportManager.exportReportToPdfStream(jasperPrint, out); return null; }catch (Exception e){ e.printStackTrace(); return new Result(false, MessageConstant.OPER_FAILD); } }}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。