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 接口测试
希望可以帮助到大家...