ssm根据pdf模板导出pdf
一、使用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相关推荐
- PdfSharp -- 根据PDF模板导出PDF
PdfSharp:v1.50.5147,.NET Framework:v4.5.1 一.PDF模板 在开始前,我觉得有必要简单说一下PDF模板 制作PDF模板的工具有很多,随便找一款就行(我这里用迅捷 ...
- Java 根据模板导出PDF
文章目录 前言 思路一:直接导出pdf 使用itext模板导出pdf 思路二:先导出word再转成pdf 1)导出word 2)word转pdf 最终方案 ~~docx4j~~ spire.doc.f ...
- java按照模板导出pdf或者word
一.java按照模板导出pdf (一)制作模板 1.在word里制作模板 因为PDF常用的软件不支持编辑,所以先用Word工具,如WPS或者Office新建一个空白Word文档,里面制作出自己想要的样 ...
- java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件
Java 使用pdf 模板生成pdf文件 --制作流程 1. 使用工具 adobe acrobat dc.word 2015 2. 使用 word 繪制一個 3*5 的表格並保存, ...
- java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...
Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...
- 制作PDF模板实现PDF文件生成
制作PDF模板实现PDF文件生成 最近开发的需求的时候,突然发现需要制作PDF,并且需要根据不同的用户制作不同的PDF,所以,为了提高效率,就想到了,制作PDF模板,然后赋值的这种方法,所幸,效果不错 ...
- java pdf模板_java通过PDF模板填写PDF表单
本文实例为大家分享了java通过PDF模板填写PDF表单的具体代码,包括图片,供大家参考,具体内容如下 需要用到的java包: itext.jar.iTextAsian.jar的JAR包.这个包里面定 ...
- itextpdf通过pdf模板生成pdf文件
itextpdf通过pdf模板生成pdf文件,设置粗体字体 1.创建pdf模板 2.使用模板生成pdf 3.itext自带的字体列表 4.遇到的坑 1.创建pdf模板 可以使用PDFFescape网站 ...
- java根据模板导出pdf,java开发面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- java根据模板导出pdf,并将多个pdf合成一个
前言 项目中,遇到这么一个需求:根据单个模板批量导出pdf,批量导出的pdf要合并成一个pdf进行打印.两个问题点:1.根据模板生成pdf.2.pdf合并 一.前期准备工作(准备pdf模板) 这个问题 ...
最新文章
- 互联网周刊2021云办公平台TOP50,leangoo领歌敏捷研发协作入选
- WPF动画的属性被劫持
- 五、性能监视(2)Windows性能日志
- LeetCode 1060. 有序数组中的缺失元素(二分查找)
- linux 建立伪目标过程,linux之Makefile 编写、规则、伪目标、变量
- 三菱基于雷诺平台推全新跑车 搭1.1T引擎
- 嵌入式环境搭建之NFS
- getNextElement( )函数——获取下一个特定的元素节点
- linux网络完全与防护
- (转)金丘股份CEO左鹏:用区块链做ABS,实现消费金融ABS创新
- ShardedJedis的使用
- 各种投影灯泡的清零方法!
- java 网页版通讯_JavaWeb网页聊天室(WebSocket即时通讯)
- iOS Orientation 屏幕旋转
- 2015~2020年中国房价走势
- firewall添加白名单_详解firewall的规则设置与命令(白名单设置)
- 解决IE6下select z-index 无效
- 压力传感器电阻应变片的发展
- substr, substing,slice
- 李洪超 硬件工程师_壹号本推出工程师PC运维迷你电脑,7寸大小,丰富的接口配置...