一、使用word设计pdf模板,并另存为pdf格式的文件。

二、使用Adobe Acrobat DC工具,打开pdf文件,工具中选择准备表单并打开

三、在文件中设置域名称,如下图

四、下面是正式的操作

pom依赖

<!--  生成PDF相关 iText,必须引入jar包 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.12</version></dependency><!--   生成PDF相关 输出中文,还要引入下面itext-asian.jar包: --><dependency><groupId>org.bouncycastle.bcprov-jdk15on.1.57.org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.57</version></dependency><!--     生成PDF相关 设置pdf文件密码,还要引入下面bcprov-jdk15on.jar包: --><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>

利用pdf模板PDFTemplateExportUtil,生成并导出pdf

public class PDFTemplateExportUtil {/** * @Description: TODO(利用模板生成pdf的方法)* * @param templatePath 模板的路径* * @param o 模板参数* @param fileName 导出文件名称* * @throws*/public static void pdfout(String templatePath, Map<String, Object> o,String fileName, HttpServletResponse response) {PdfReader reader;OutputStream out;ByteArrayOutputStream bos;PdfStamper stamper;try {fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1");//处理中文乱码,防止名称不对应out = response.getOutputStream();// 输出流response.setContentType("application/force-download");// 设置强制下载不打开response.addHeader("Content-Disposition", "attachment;fileName=" + fileName + ".pdf");// 设置文件名reader = new PdfReader(templatePath);// 读取pdf模板bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);AcroFields form = stamper.getAcroFields();// 文字类的内容处理Map<String, String> datemap = (Map<String, String>) o.get("datemap");for (String key : datemap.keySet()) {String value = datemap.get(key);form.setField(key, value);}// 图片类的内容处理Map<String, String> imgmap = (Map<String, String>) o.get("imgmap");for (String key : imgmap.keySet()) {System.out.println("picture key:" + key);String value = imgmap.get(key);String imgpath = value;int pageNo = form.getFieldPositions(key).get(0).page;Rectangle signRect = form.getFieldPositions(key).get(0).position;float x = signRect.getLeft();float y = signRect.getBottom();// 根据路径读取图片Image image = Image.getInstance(imgpath);//网络图片//Image image = Image.getInstance(new URL(imgpath))// 获取图片页面PdfContentByte under = stamper.getOverContent(pageNo);// 图片大小自适应image.scaleToFit(signRect.getWidth(), signRect.getHeight());// 添加图片image.setAbsolutePosition(x, y);under.addImage(image);}stamper.setFormFlattening(true);// 如果为false,生成的PDF文件可以编辑,如果为true,生成的PDF文件不可以编辑stamper.close();Document doc = new Document();PdfCopy copy = new PdfCopy(doc, out);doc.open();int n = reader.getNumberOfPages();// 根据页数导出pdf,防止页面丢失for (int i = 1; i <= n; i++) {PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), i);copy.addPage(importPage);}doc.close();out.flush();out.close();} catch (IOException e) {System.out.println(e);} catch (DocumentException e) {System.out.println(e);}}
}

请求action

@RequestMapping(value = "employee/infoDetail")public @ResponseBody CjwResult infoDetail(Long employeeId,HttpServletRequest request, HttpServletResponse response) {
//获取模板路径String classpath = this.getClass().getClassLoader().getResource("/").getPath() ;String path = classpath+ "template/resumetemplate.pdf";String webappRoot = classpath.replaceAll("WEB-INF/classes/", "");
//      String templatePath = "/template/resumetemplate.pdf";System.out.println(employeeId);CjwResult result = null;try {Map<String, Object> o = new HashMap<>();Map<String, Object> map = new HashMap<>();map.put("employeeName","alan");map.put("mobile", "18500091965");map.put("email", "alan_lah@163.com");map.put("nation", "汉");map.put("hireDate", "2019-9-17");map.put("marital", "未婚");map.put("certificateCode", "342222198909175650");map.put("liveAddress", "上海市长宁区娄山关路600弄2号捷运新虹桥大厦7E");Map<String, Object> map2 = new HashMap<>();map2.put("personalImg", webappRoot+"images/person.png");map2.put("idCardFont", webappRoot+"images/person.png");map2.put("idCardBack", webappRoot+"images/person.png");map2.put("acadeCertificate", webappRoot+"images/person.png");map2.put("degreeCertificate", webappRoot+"images/person.png");o.put("datemap", map);o.put("imgmap", map2);String filename ="员工信息表";PDFTemplateExportUtil.pdfout(path, o,filename, response);result=new CjwResult(200, "sucess", null);} catch (Exception e) {log.info("异常:"+e);}return result;}
}

ssm根据pdf模板导出pdf相关推荐

  1. PdfSharp -- 根据PDF模板导出PDF

    PdfSharp:v1.50.5147,.NET Framework:v4.5.1 一.PDF模板 在开始前,我觉得有必要简单说一下PDF模板 制作PDF模板的工具有很多,随便找一款就行(我这里用迅捷 ...

  2. Java 根据模板导出PDF

    文章目录 前言 思路一:直接导出pdf 使用itext模板导出pdf 思路二:先导出word再转成pdf 1)导出word 2)word转pdf 最终方案 ~~docx4j~~ spire.doc.f ...

  3. java按照模板导出pdf或者word

    一.java按照模板导出pdf (一)制作模板 1.在word里制作模板 因为PDF常用的软件不支持编辑,所以先用Word工具,如WPS或者Office新建一个空白Word文档,里面制作出自己想要的样 ...

  4. java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件

    Java 使用pdf 模板生成pdf文件 --制作流程 1.      使用工具 adobe acrobat dc.word 2015 2.      使用 word 繪制一個 3*5 的表格並保存, ...

  5. java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...

    Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...

  6. 制作PDF模板实现PDF文件生成

    制作PDF模板实现PDF文件生成 最近开发的需求的时候,突然发现需要制作PDF,并且需要根据不同的用户制作不同的PDF,所以,为了提高效率,就想到了,制作PDF模板,然后赋值的这种方法,所幸,效果不错 ...

  7. java pdf模板_java通过PDF模板填写PDF表单

    本文实例为大家分享了java通过PDF模板填写PDF表单的具体代码,包括图片,供大家参考,具体内容如下 需要用到的java包: itext.jar.iTextAsian.jar的JAR包.这个包里面定 ...

  8. itextpdf通过pdf模板生成pdf文件

    itextpdf通过pdf模板生成pdf文件,设置粗体字体 1.创建pdf模板 2.使用模板生成pdf 3.itext自带的字体列表 4.遇到的坑 1.创建pdf模板 可以使用PDFFescape网站 ...

  9. java根据模板导出pdf,java开发面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  10. java根据模板导出pdf,并将多个pdf合成一个

    前言 项目中,遇到这么一个需求:根据单个模板批量导出pdf,批量导出的pdf要合并成一个pdf进行打印.两个问题点:1.根据模板生成pdf.2.pdf合并 一.前期准备工作(准备pdf模板) 这个问题 ...

最新文章

  1. 互联网周刊2021云办公平台TOP50,leangoo领歌敏捷研发协作入选
  2. WPF动画的属性被劫持
  3. 五、性能监视(2)Windows性能日志
  4. LeetCode 1060. 有序数组中的缺失元素(二分查找)
  5. linux 建立伪目标过程,linux之Makefile 编写、规则、伪目标、变量
  6. 三菱基于雷诺平台推全新跑车 搭1.1T引擎
  7. 嵌入式环境搭建之NFS
  8. getNextElement( )函数——获取下一个特定的元素节点
  9. linux网络完全与防护
  10. (转)金丘股份CEO左鹏:用区块链做ABS,实现消费金融ABS创新
  11. ShardedJedis的使用
  12. 各种投影灯泡的清零方法!
  13. java 网页版通讯_JavaWeb网页聊天室(WebSocket即时通讯)
  14. iOS Orientation 屏幕旋转
  15. 2015~2020年中国房价走势
  16. firewall添加白名单_详解firewall的规则设置与命令(白名单设置)
  17. 解决IE6下select z-index 无效
  18. 压力传感器电阻应变片的发展
  19. substr, substing,slice
  20. 李洪超 硬件工程师_壹号本推出工程师PC运维迷你电脑,7寸大小,丰富的接口配置...

热门文章

  1. python属于什么类型的选修课_河北大学python选修课00次作业
  2. 优秀的网站加速插件 – WP rocket详细设置教程
  3. Vue 背景音乐点击随机播放
  4. Python爬虫lxml解析实战
  5. 对于教育改革的一些省思
  6. 2012服务器系统怎么安装sql,使用安装向导安装 SQL Server 2012(安装程序)
  7. Sun工作站技术文档
  8. CSS3简明教程-1.1.CSS3是什么
  9. Java编程英语单词大全_java编程常用英语单词
  10. Golang 逃逸分析