1.需要先准备PDF的模板,使用工具Adobe Acrobat ,设置表单,添加区域框,为每个框设置名字。以下就是我准备的模板。

2.项目中引入要是用的依赖。写在pom.xml中,更新maven

       <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>5.2.0</version></dependency>

3.代码。

   // 在自己的业务区域内增加以下代码Map<String, Object> params = new HashMap<>();//map的key就是你自己在模板中设置的名称,value是你自己的值params.put("name",psomCustomerInfo.getName());params.put("user",psomNicheInfo.getListCustomer().get(0).getName());params.put("tele",psomNicheInfo.getListCustomer().get(0).getTele());params.put("email",psomCustomerInfo.getEmail());params.put("addr",psomCustomerInfo.getAddress());params.put("item",psomNicheInfo.getNicheName());// 生成新的文件字符串String filePath = StringUtils.getUUID32() + ".pdf";//条形码的名称String erwPath = "D://upload.jpg";//生成PDF,filePath是新生成文件的名字,erwPath是图片的位置test(params,filePath,erwPath);

下面会沾出生成PDF的代码

  public static int test(Map map, String filePath,String erwPath) throws IOException, DocumentException {//上传目录地址File directory = new File("");// 参数为空String courseFile = directory.getCanonicalPath();//定位到项目的路径String uploadDir = courseFile + "\\" + "src\\main\\resources\\static\\upload";
//
//        //这是我自己的测试路径,即模板pdf的路径String pdfPath = uploadDir + "\\"+ "bjd.pdf";PdfReader pr = new PdfReader(pdfPath);ByteArrayOutputStream bos = new ByteArrayOutputStream();//生成的pdf目标文件PdfStamper ps = new PdfStamper(pr, bos);//?PdfContentByte under = ps.getUnderContent(1);//字体//BaseFont bf = BaseFont.createFont("c:\\windows\\fonts\\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);ArrayList<BaseFont> list = new ArrayList<BaseFont>();//list.add(bf);AcroFields fields = ps.getAcroFields();//fields.setSubstitutionFonts(list);//插入图片fields.addSubstitutionFont(BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED));// 通过域名获取所在页和坐标,左下角为起点int pageNo = fields.getFieldPositions("erw").get(0).page;Rectangle signRect = fields.getFieldPositions("erw").get(0).position;float x = signRect.getLeft();float y = signRect.getBottom();// 读图片,图片存储位置Image image = Image.getInstance(erwPath);// 获取操作的页面PdfContentByte undere = ps.getOverContent(pageNo);// 根据域的大小缩放图片image.scaleToFit(signRect.getWidth(), signRect.getHeight());// 添加图片image.setAbsolutePosition(x, y);undere.addImage(image);//添加图片的代码结束fillData(fields, map);//设置属性生成文档ps.setFormFlattening(true);ps.close();//生成的pdf的文件路径String resultPath = uploadDir +"\\" +filePath;try {OutputStream os = new FileOutputStream(resultPath);os.write(bos.toByteArray());os.flush();os.close();bos.close();} catch (FileNotFoundException e1) {//e1.getMessage()+"系统找不到指定的文件";return 0;} catch (IOException e) {e.printStackTrace();}return 1;}
 public static void fillData(AcroFields fields, Map map) throws IOException, DocumentException {System.out.println("come fillData");//将map中的数据填充至fields中for (Object key : map.keySet()) {fields.setField(key.toString(), map.get(key).toString());}}

以上就是根据模板生成PDF的方法,参数根据自己的实际逻辑进行修改就可以。

Java生成PDF文件并使用指定的模板,带图片相关推荐

  1. Java生成PDF文件_自用

    Java生成PDF文件 一.前言 前几天,做ASN条码收货模块,需要实现打印下载收货报表,经一番查找,选定iText--用于生成PDF文档的一个Java类库.废话不多说,进入正题. 二.iText简介 ...

  2. iText5实现Java生成PDF文件完整版,二维码

    iText5实现Java生成PDF文件完整版 vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ? Vue打印文件(v-print ...

  3. # Java 生成pdf文件

    Java 生成pdf文件 引入依赖 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <depend ...

  4. [itext]Java生成PDF文件

    一.前言 最近在做也导出试卷的功能,刚开始是导出为doc,可是导出来格式都有变化,最后说直接将word转为pdf,可是各种不稳定,各种报错.最后想到直接将文件写入pdf(参考:http://www.c ...

  5. Java生成PDF文件,java面试题,java初级笔试题

    写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. 一. ...

  6. Java生成PDF文件(Itext篇)

    在企业的信息系统中,报表处理一直占比较重要的作用,iText是一种生成PDF报表的Java组件.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表,这样 ...

  7. java导出pdf文件并下载_java根据模板生成pdf文件并导出

    1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖 [html] view plain copy com.itextpdf itextpdf 5.5.10 [html ...

  8. java生成pdf字体居中,Java生成pdf文件,解决中文乱码问题

    如下代码使用itext生成pdf文件,通过设置中文字体避免乱码. /** * AsianTest.java */ import java.io.FileOutputStream; import jav ...

  9. java生成pdf文件流_java 已经获取pdf代码,如何把他pdf文件保存到本机 要求用输出流做...

    展开全部 一.iText介绍 iText是着名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的32313133353236313431303231363533e4b893e5b1 ...

最新文章

  1. liunx系统mysql全量备份和增量备份
  2. 开发自己的Data Access Application Block[下篇]
  3. JS收集:限制输入搜索串
  4. Codeforces Round #601 (Div. 2) E2. Send Boxes to Alice (Hard Version) 思维 + 质因子
  5. mysql 优化300例_mysql的limit优化实例
  6. 记一则js替换字符串的问题
  7. django-演练-添加老师-form表单方式添加
  8. 永恒之蓝漏洞原理 445_不死的EternalBlue(永恒之蓝)
  9. nginx的源码编译及相关文件配置
  10. python中pop用法_python中pop()函数的用法
  11. 这可能是最详细的Arduino制作4*4光立方教程(原创)
  12. 010Editor逆向分析
  13. 亚马逊SP-API市场端点接口文档整理
  14. tableau关于增长率、占比的表计算实践应用
  15. 邦纳超声波传感器T30UXDA
  16. configure配置安装详解
  17. Matlab修改背景色
  18. linux xmapp的安装
  19. 一分钟用HCaas搭建Frp内网穿透
  20. 浅谈短视频背后的社会道德伦理问题(个人观点,仅供参考)

热门文章

  1. humps在matlab中什么意思,[转载]Humps函数
  2. LOG,Harris,SUSAN角点及边缘检测原理和代码实现
  3. 无所遁形的未来:人肉搜索还不够,AI带来了人脸搜索
  4. 服务器智能管理,管好十万台服务器?必须靠智能!
  5. pny 魔豆系列4G U盘 测速
  6. Python入门——Day4(元组,字符串格式化,转义字符,format函数)
  7. 码云上传本地文件夹,码云只能上传20个文件的突破方法
  8. 【PyCharm警告】选择性忽略 PEP8 警告
  9. 笔记本电脑重装系统后CPU风扇噪音很大怎么办
  10. 奥的斯服务器显示DBF,OTIS故障代码故障总汇01.doc