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";//制作好的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 接口测试
希望可以帮助到大家...