1. 下载 adobe acrobat

https://www.cr173.com/soft/11135.html

2. 编辑 pdf 模板

  • 1用 acrobat 打开 pdf

  • 编辑模板

  • 添加表单元素保存模板 “moban-1.pdf”

3. Java 动态生成 pdf

  • pom 依赖
        <!-- pdf 依赖--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency><!--POI解析--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>
  • 实体类对象(属性命名方式,请大家不要模仿(不规范))

import lombok.Data;
import lombok.experimental.Accessors;@SuppressWarnings("all")
@Data
@Accessors(chain = true)
public class ObjSoure {//0private String name;//1private String num;//2private String bisaiName;//3private String desc;//4private String shengfen;//5private String kaodian;//6private String jibie;//7private String zubie;//8private String diyichengji;//9private String diyibaifenbi;//10private String dierchengji;//11private String dierbaifenbi;//12private String zongchenji;//13private String quanguobaifenbi;//14private String shengbaifenbi;//15private String gongbuchengji;
}
  • 读取 excel 文件中的数据(下图为 Excel 数据样例,方法中有好多没有做 校验,后期再补充)


import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.util.ResourceUtils;import java.io.*;
import java.util.ArrayList;
import java.util.List;/*** @Description 读取Excel文件* @Author      yanghanwei* @Mail        yanghanwei@geotmt.com* @Date        2020/1/5 20:58* @Version     v1**/
public class ReadExcel {XSSFWorkbook wb = null;public void  init (){try {//excel模板路径File cfgFile = ResourceUtils.getFile("E:/总分-4发布成绩.xlsx");InputStream in = new FileInputStream(cfgFile);//读取excel模板wb = new XSSFWorkbook(in);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 读取 Excel 中的数据* @return*/public List<ObjSoure> read() {List<ObjSoure> list = new ArrayList<ObjSoure>();init ();//获取sheet表格,及读取单元格内容XSSFSheet sheet = null;try{sheet = wb.getSheetAt(0);int lastRowNum = sheet.getLastRowNum();System.out.println(lastRowNum);for (int i = 1; i<= lastRowNum; i++) {ObjSoure objSoure = new ObjSoure();// Excel 中一共有16 列,暂时写死了for (int j = 0; j< 16; j++) {String cellValue ="";if(null != sheet.getRow(i).getCell(j)){sheet.getRow(i).getCell(j).setCellType(CellType.STRING);cellValue = sheet.getRow(i).getCell(j).getStringCellValue();linkObj(objSoure, j, cellValue);}}System.out.println("================ 第"+i+"行完成==============");System.out.println(objSoure);list.add(objSoure);}}catch (Exception e){e.printStackTrace();}return list;}/*** 根据 excel 文件的顺序给对象赋值* @param obj* @param j* @param val*/private void linkObj(ObjSoure obj, int j, String val) {switch (j) {case 0:obj.setName(val);break;case 1:obj.setNum(val);break;case 2:obj.setBisaiName(val);break;case 3:obj.setDesc(val);break;case 4:obj.setShengfen(val);break;case 5:obj.setKaodian(val);break;case 6:obj.setJibie(val);break;case 7:obj.setZubie(val);break;case 8:obj.setDiyichengji(val);break;case 9:obj.setDiyibaifenbi(tranNum(val));break;case 10:obj.setDierchengji(val);break;case 11:obj.setDierbaifenbi(tranNum(val));break;case 12:obj.setZongchenji(val);break;case 13:obj.setQuanguobaifenbi(tranNum(val));break;case 14:obj.setShengbaifenbi(tranNum(val));break;case 15:obj.setGongbuchengji(val);break;default:break;}}/*** 百分数的特殊处理* @param val* @return*/private String tranNum(String val){Double b = Double.valueOf(val)* 100;return b.intValue() + "%";}public static void main(String[] args) {new ReadExcel().read();}
}
  • 基于模板,动态的填充 pdf 模板并生成 新的pdf 文件
public static void fillTemplate() {List<ObjSoure> read = new ReadExcel().read();
//        List<ObjSoure> read = new ArrayList<>();
//        read.add(new ObjSoure().setName("张三").setZongchenji("800").setQuanguobaifenbi("20%").setShengbaifenbi("30%").setShengfen("shanxi"));System.out.println(read);// 模板路径String templatePath = "E:/moban-1.pdf";if(null != read && !read.isEmpty()){for(int a = 0; a < read.size(); a++){ObjSoure obj = read.get(a);// 生成的新文件路径String newPDFPath = "E:/学生成绩/" + obj.getName().trim() + "-"+ obj.getShengfen().trim() + ".pdf";PdfReader reader;FileOutputStream out;ByteArrayOutputStream bos;PdfStamper stamper;try {out = new FileOutputStream(newPDFPath);// 输出流reader = new PdfReader(templatePath);// 读取pdf模板bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);AcroFields form = stamper.getAcroFields();String[] str = { obj.getName(),obj.getNum(), obj.getBisaiName(), obj.getDesc(), obj.getShengfen(), obj.getKaodian(), obj.getJibie(), obj.getZubie(),obj.getDiyichengji(), obj.getDiyibaifenbi(), obj.getDierchengji(), obj.getDierbaifenbi(),obj.getZongchenji(), obj.getQuanguobaifenbi(),obj.getShengbaifenbi(), obj.getGongbuchengji()};int i = 0;java.util.Iterator<String> it = form.getFields().keySet().iterator();while (it.hasNext()) {String name = it.next().toString();System.out.println(name + "============" + str[Integer.parseInt(name)]);form.setField(name, str[Integer.parseInt(name)]);}stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为truestamper.close();Document doc = new Document();PdfCopy copy = new PdfCopy(doc, out);doc.open();PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);copy.addPage(importPage);doc.close();} catch (IOException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();}}}}
  • 启动 main(测试)
 public static void main(String[] args) {fillTemplate();}
  • 生成的 PDF 文件展示

Java 读取 Excel 文件内容, 根据 pdf 模板动态生成对应的 pdf 文件相关推荐

  1. 【Java进阶营】java 读取 excel 表格内容

    一.添加依赖 org.apache.poi poi 3.8 org.apache.poi poi-ooxml 3.8 二.工具类 根据文件后缀判断 2003 || 2007 || 2010 格式. i ...

  2. java 读取 Excel表格内容

    读写Excel,这么重要且普遍的问题,伟大的apache,早就为我们封装好了jar包,供我们使用了.无需我们再造轮子. 第一步:添加jar包依赖 <!--读取 excel 的所需jar包--&g ...

  3. demo1—java读取Excel文件到数据库、java制作准考证

    文章目录 读取Excel数据到数据库 由模板制作准考证(word文档处理) 总结 读取Excel数据到数据库 项目用到的jar包: <!-- https://mvnrepository.com/ ...

  4. java读取excel数据_Java读取Excel内容(转)

    借助于apathe的poi.jar,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可 本例使用java来读取exc ...

  5. java 读取 excel poi_java poi怎么获取excel单元格的内容?

    展开全部 package edu.sjtu.erplab.poi; import java.io.InputStream&ch=ww.xqy.chain" target=" ...

  6. Java读取Excel内容

    借助于apathe的poi.jar,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可 本例使用java来读取exc ...

  7. java读取excel某个单元格的值_java poi怎么获取excel单元格的内容

    展开全部 package edu.sjtu.erplab.poi; import java.io.InputStream&ch=ww.xqy.chain" target=" ...

  8. java读取excel数据的方法是_java怎么读取excel文件里的数据

    展开全部 下面是一个简单的读取例子,如果报"java.io.IOException: Invalid header signature; read 4503608217567241, exp ...

  9. java读取Excel内容添加到list集合里面去

    java读取Excel内容添加到list集合里面去 package com.changan.contract.newsign.utils;import com.changan.contract.xqh ...

最新文章

  1. php think命令用不了,自定义 PHP think 命令无法在命令类文件里面使用 Db 类
  2. 单片机 多机通讯c语言,单片机多机串口通信.doc
  3. Coursera公开课笔记: 斯坦福大学机器学习第七课“正则化(Regularization)”
  4. linux 内核日志等级,Linux系统中日志级别详情
  5. [NOTE] SQL与sqlmap
  6. Retina时代的前端视觉优化
  7. .NET内存管理五大基础知识
  8. php计算器等号没反应,为什么按等号没有反应?
  9. 011235813用java写出来_【JAVA】关于在运行后控制台显示的一些功能问题,请吧友帮我解答...
  10. 【概率论】3-4:二维分布(Bivariate Distribution)
  11. C# DateTime的ToString()方法的使用
  12. 计算机学报应用研究,组推荐系统及其应用研究-计算机学报.PDF
  13. 绿色全要素生产率数据(2004-2017年)
  14. python爬虫 提取豆瓣Top250电影信息
  15. Shiro自定义Ream
  16. 计算机地图制图的优势,计算机地图制图
  17. 公司福利直接影响员工的身心健康
  18. Android开发 ConstraintLayout布局的详解
  19. 计算机一级vlookup函数的使用方法,Vlookup函数的使用方法 Vlookup函数的操作实例...
  20. 华南理工大学电气考研经验贴

热门文章

  1. 【PS-1】关于图层
  2. Vivo/Oppo手机安装app时自动输入密码以及点击安装
  3. apply函数的使用
  4. 基于Vue+SpringCloudAlibaba微服务电商项目实战-构建会员服务-011:基于Vue快速整合会员服务接口
  5. xshell连接服务器输入密码提示“ssh服务器拒绝了密码,请再试一次”的解决办法
  6. appinventor 2热成像 热力图组件定制extension插件,安卓APP开发
  7. 马尔代夫满月岛游记 邂逅海洋天堂
  8. python中numpy的dtype
  9. lvs,dhcp,dns,lnmp,lamp,zabbix,nagios,hadoop,openstack,rsync等工作原理
  10. 开通微信公众号:talk8谈吧