当前位置 博文首页 > BestTomDoG的博客:springboot生成PDF文件返回给前台

    BestTomDoG的博客:springboot生成PDF文件返回给前台

    作者:[db:作者] 时间:2021-07-04 12:57

    1制作好自己的pdf模版,我这里是通过wps把word转换成pdf文件

    2下载Adobe Acrobat DC工具来制作pdf的模板

    以上就是怎么制作pdf文件的模版

    3引入maven?依赖?

    <dependency>
         <groupId>com.itextpdf</groupId>
         <artifactId>itextpdf</artifactId>
         <version>5.5.5</version>
    </dependency>
    
    <dependency>
         <groupId>com.itextpdf</groupId>
         <artifactId>itext-asian</artifactId>
         <version>5.2.0</version>
    </dependency>

    4编写接口

    /**
         * 根据计划单ID查找到当条订单,并生成PDF返回给前台
         *  请忽略我的根据id查询,根据自己的情况来决定来查询自己的数据
         * @param id
         * @param response
         * @return
         */
        public Result<Object> downloadPDFFile(@PathVariable("id") String id, HttpServletResponse response) {
            try {
                ResponseSalesApplyList applyList = salescustomerapplylistservice.selectDetailById(id);
                String templatePath = "/Users/apple/Desktop/test.pdf";
                PdfReader reader;
                FileOutputStream out = null;
                PdfReader pdfReader = null;
                ByteArrayOutputStream bos = null;
                PdfStamper stamper;
                int page = 1;
                List<PdfReader> list = new ArrayList();
                reader = new PdfReader(templatePath);
    
                bos = new ByteArrayOutputStream();
                stamper = new PdfStamper(reader, bos);
                AcroFields form = stamper.getAcroFields();//这个form就是pdf里面的表单key就是pdf的键 value 就是往里面要放的值
    
                form.setField("studentNum", "001");
                form.setField("name", "张三");
                form.setField("subject", "语文");
                form.setField("score", "98");
    
                //true代表生成的PDF文件不可编辑
                ServletOutputStream servletOutputStream = response.getOutputStream();
                stamper.setFormFlattening(true);
                stamper.close();
                pdfReader = new PdfReader(bos.toByteArray());
                list.add(pdfReader);
                Document doc = new Document();
                PdfCopy copy = new PdfCopy(doc, response.getOutputStream());
                doc.open();
                for (int k = 0; k < list.size(); k++) {
                    PdfReader pdfReader1 = list.get(k);
                    doc.newPage();
                    copy.addDocument(pdfReader1);
                }
                copy.close();
                return Result.success("删除成功!");
            } catch (Exception e) {
                e.printStackTrace();
                return Result.error(ResultMsg.EXECUTE_ERROR.fillArgs(e.getMessage()));
            }
        }
    

    5 接口测试

    希望可以帮助到大家...

    cs