最近业务需求,需要生成合同展现给用户,研究了下itextpdf,基本实现需求,参考http://blog.csdn.net/top__one/article/details/65442390

具体实现步骤如下:

1、maven引入所需jar

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

注:itextpdf注意版本问题,有些版本就会引起jar包冲突,这个版本是可以的

2、运用wps,编辑模板文本,最后运用wps特色功能生成PDF

3、下载Adobe Acrobat Pro DC 这个是收费的,可以先试用进行测试

用Adobe Acrobat Pro DC打开刚生成的PDF文件,进行编辑选择标红部分下拉框中的“准备表单”

选择标红工具,对需要自动填充的属性进行标注

下图为我标注的属性

至此,模板生成,保存为test.pdf。

4、java代码,根据模板生成相应的文件

package com.loantest.controller;
import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletContext;import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;  public class ITextPdfTest {  // 利用模板生成pdf  public static void fillTemplate() throws IOException, DocumentException {  String templatePath ="E:/test.pdf"; // 生成的新文件路径  String newPDFPath = "E:/test1.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[] contactInfo = {"TOP__ONE1几经师傅", "132323231几经师傅","几经师傅1234567891" }; int i = contactInfo.length-1;  java.util.Iterator<String> it = form.getFields().keySet().iterator();  while (it.hasNext()) {  String name = it.next().toString();  form.setField(name, contactInfo[i]);  i--;}  stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为true  stamper.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.getStackTrace();} catch (DocumentException e) {  e.getStackTrace();}  }  public static void main(String[] args) throws IOException, DocumentException {fillTemplate();}
}

模板文件路径,生成文件路径如下图:

运行代码,打开test1:

至此,成功,这是简单的测试。

5、如果需要从取服务器上文件模板,生成到服务器上则需稍微处理一下,就只贴代码吧~

package com.loantest.controller;import java.awt.Color;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import javax.servlet.ServletContext;import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;public class ITextPdf {// 利用模板生成pdfpublic static String fillTemplate(String[] contactInfo) throws IOException, DocumentException {WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();ServletContext servletContext = webApplicationContext.getServletContext();String os = System.getProperty("os.name");// 默认为win系统String relativeTemplatePath = "\\static\\test5.pdf";String relativeNewPDFPath = "\\static\\" + (int) ((Math.random() * 9 + 1) * 100000) + ".pdf";// 非win系统if (!os.toLowerCase().startsWith("win")) {relativeTemplatePath = "/static/test5.pdf";relativeNewPDFPath = "/static/" + (int) ((Math.random() * 9 + 1) * 100000) + ".pdf";}// 模板路径String templatePath = servletContext.getRealPath(relativeTemplatePath);// 生成的新文件路径String newPDFPath = servletContext.getRealPath(relativeNewPDFPath);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();int i = contactInfo.length - 1;java.util.Iterator<String> it = form.getFields().keySet().iterator();while (it.hasNext()) {String name = it.next().toString();form.setField(name, contactInfo[i]);i--;}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.getStackTrace();} catch (DocumentException e) {e.getStackTrace();}System.out.println(relativeNewPDFPath);return relativeNewPDFPath;}public static void main(String[] args) throws IOException, DocumentException {String[] str = { "TOP__ONE1几经师傅", "132323231几经师傅", "几经师傅1234567891" };fillTemplate(str);}
}

java运用itextpdf实现根据模板生成合同并返回网络路径,供用户查看相关推荐

  1. Java/web/jsp根据pdf模板生成荣誉证书PDF文件

    Java/web/jsp根据pdf模板生成荣誉证书PDF文件 1.前言 最近博主在开发一个大学生学分管理系统,按照对方用户的要求,他们需要一个生成PDF荣誉证书的功能. 于是Java根据pdf模板生成 ...

  2. Java使用Itext5与html模板生成pdf并支持下载

    Java使用Itext5与html模板生成pdf 文章目录 Java使用Itext5与html模板生成pdf 前言 一.引入依赖 二.相关使用说明 1.工具类 2.模板配置 3.模板的抽象类(定义了相 ...

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

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

  4. apache poi使用例_使用java Apache poi 根据word模板生成word报表例子

    [实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...

  5. 使用java Apache poi 根据word模板生成word报表

    使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...

  6. java itextpdf使用HTML模板生成pdf文件,并设置table

    我们这里是maven项目,导入相应jar包: <dependency><groupId>org.freemarker</groupId><artifactId ...

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

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

  8. JAVA根据word模板生成合同,并能实现网页在线浏览/打印/下载

    最近, 项目有这样一个需求:       根据我选择的模板(docx文件),和我表单填的数据,生成相应的合同文件(docx),该合同要能网页在线浏览/打印/下载在合同中还要放置签字图片和身份证图片 我 ...

  9. JAVA使用POI-TL通过Word模板生成Word文件

    技术背景 很多时候我们网站或者系统需要提供一些word文件,例如证明.docx或者订单.docx等文件供用户下载打印等. 用Java操作word文档,毫无疑问,当下最流行apache poi,对于po ...

最新文章

  1. 在Ubuntu中自动运行KMS服务
  2. MIPI参数配置解释
  3. leetcode - Single Number
  4. Change default duration for Fiori Toast
  5. 百度SEO抖音无水印解析网站源码
  6. python编程技术总结_Python面向对象编程(OOP)技术总结
  7. 会mysql不会sql_不是吧,不会有人还不知道MySQL中具实用的SQL语句
  8. MongoDB学习笔记~官方驱动的原生Curd操作
  9. sklearn.ensemble.RandomForestRegressor参数含义
  10. 专利:专利说明书的主要组成部分
  11. Analog Trunk Features (模拟中继特征)
  12. 谷歌Flan-T5诞生!1800种语言任务超大规模微调
  13. 20191025 前端开发日报
  14. 学机器视觉好找工作吗?人工智能机器视觉方向怎么样?
  15. 解放前端工程师——手把手教你开发自己的自定义列表和自定义表单系列之二接口
  16. 艾永亮:打造超级产品做到这五点,有效提高用户对企业的印象
  17. mybatis和spring框架的整合
  18. 《产品经理心得》02:表单提示和输入验证方案
  19. Hadoop权威指南——关于Sqoop
  20. C语言程序设计(第三版)何钦铭著 习题4-6

热门文章

  1. MATLAB安装后出现“License Manager Error -8?”,替换文档时报错解决方法
  2. CodeSoft模板问题--字体扭曲条码无法扫描
  3. 【python】【转调】用python程序实现简谱转调
  4. 小学教师计算机课评课,信息技术公开课的评课
  5. 分布式操作系统 淘宝 服务器,什么是分布式操作系统?
  6. couchbase java view_java连接couchbase的memcache
  7. 瑞盟视频数模转换器MS2502-适合于数字电视、电脑视频处理及雷达信号处理等数字视频应用
  8. CAN总线(二)——CAN2.0标准与协议分析
  9. android 根目录 文件 打包,Android image文件的打包和解包
  10. 【webrtc】RTPSender