基於SpringBoot項目集成iReport


學而時習之,不亦說乎

基於SpringBoot項目集成iReport,實現預覽、下載PDF功能。

具體步驟如下:

  1. 加入相關依賴
<!-- PDF打印相關依賴 -->
	<dependency>
		<groupId>net.sf.jasperreports</groupId>
		<artifactId>jasperreports</artifactId>
		<version>6.17.0</version>
	</dependency>
	<dependency>
		<groupId>org.codehaus.groovy</groupId>
		<artifactId>groovy-all</artifactId>
		<version>2.4.11</version>
	</dependency>
	<!-- 解決中文字體顯示問題 -->
	<dependency>
		<groupId>cn.lesper</groupId>
		<artifactId>iTextAsian</artifactId>
		<version>3.0</version>
	</dependency>
  1. 在項目的resource目錄下創建ireport文件夾,將在ireport設計器中設計好的test.jrxml文件,復制黏貼入該文件夾下。

  2. 提供service方法

    @Autowired
    private DataSource dataSource;
    
    @Override
    public void optPdf(HttpServletResponse response,String businessUuid,Integer optType) throws Exception {

        String fileName = "test.jrxml";
        String pdfName = "test";
        //File file = ResourceUtils.getFile("classpath:ireport/" + fileName);
        //jar部署方式需要以以下方式獲取文件
        InputStream is = Test.class.getResourceAsStream("/ireport/" + fileName);
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/pdf");
        response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(pdfName, "UTF-8") + ".pdf");

        try {
            //編譯jasperReport
            JasperReport jasperReport = JasperCompileManager.compileReport(is);
            //添加iReport入參
            HashMap<String, Object> params = new HashMap<>();
            params.put("uuid",businessUuid);
            //獲取outputStream
            OutputStream outputStream = response.getOutputStream();
            if(optType == 1){
                //預覽
                byte[] bytes = JasperRunManager.runReportToPdf(jasperReport,params,dataSource.getConnection());
                response.setContentType("application/pdf;charset=UTF-8");
                response.setHeader("content-disposition","inline");
                response.setContentLength(bytes.length);
                outputStream.write(bytes, 0, bytes.length);
                outputStream.flush();
                outputStream.close();
            }else{
                //下載
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params,dataSource.getConnection());
                JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
            }

        } catch (IOException | JRException e) {
            e.printStackTrace();
        }
    }
  1. 創建一個Controller類,增加相應API接口。
    @ApiOperation("業務申請單PDF預覽")
    @GetMapping("/showPdf")
    public void showPdf(HttpServletResponse response,@RequestParam String businessUuid)throws Exception{
        resourceManageService.optPdf(response,businessUuid,1);
    }

    @ApiOperation("業務申請單PDF下載")
    @GetMapping("/downPdf")
    public void downPdf(HttpServletResponse response,@RequestParam String businessUuid)throws Exception{
        resourceManageService.optPdf(response,businessUuid,2);
    }
  1. 啟動SpringBoot項目

預覽方式訪問:

http://127.0.0.1:8080/showPdf?businessUuid=1111

下載方式訪問:

http://127.0.0.1:8080/downPdf?businessUuid=1111


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM