首页 / JAVA / java根据模板生成pdf
java根据模板生成pdf
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java根据模板生成pdf,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2641字,纯文字阅读大概需要4分钟。
内容图文
一、创建word模板。 word模板如图:
二、将word模板转pdf模板。
三、用Adobe Acrobat Pro打开pdf模板。
四、编辑模板域,即要填写的内容。
点击表单选择添加或编辑域选项:
双击可以 修改域的变量名及样式字体的设置。
然后保存这样pdf的模板就生成了。
六、添加mawen引用:
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.4.3</version> </dependency>
七、生成代码:
public static void pdfout(Map<String,Object> o) { // 模板路径 String templatePath = "D:/模板1.pdf"; // 生成的新文件路径 String newPDFPath = "D:/test.pdf"; PdfReader reader; FileOutputStream out; ByteArrayOutputStream bos; PdfStamper stamper; try { BaseFont bf = BaseFont.createFont("c://windows//fonts//simsun.ttc,1" , BaseFont.IDENTITY_H, BaseFont.EMBEDDED); Font FontChinese = new Font(bf, 5, Font.NORMAL); out = new FileOutputStream(newPDFPath);// 输出流 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"); form.addSubstitutionFont(bf); 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()) { 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); //获取图片页面 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(); Font font = new Font(bf, 32); 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) { System.out.println(e); } catch (DocumentException e) { System.out.println(e); } }
代码测试:
public static void main(String[] args) { Map<String,String> map = new HashMap(); map.put("Name","张三"); map.put("Code","2565"); map.put("Number","123456789"); Map<String,String> map2 = new HashMap(); map2.put("img","d:/Spring.jpg"); Map<String,Object> o=new HashMap(); o.put("datemap",map); o.put("imgmap",map2); pdfout(o); }
原文:https://www.cnblogs.com/Revival-of-everything/p/12082814.html
内容总结
以上是互联网集市为您收集整理的java根据模板生成pdf全部内容,希望文章能够帮你解决java根据模板生成pdf所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。