1.准备操作的maven包

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

2.准备好你需要操作的PDF模板

3.准备好Adobe Acrobat Distiller DC 工具

4.使用Adobe Acrobat 打开你准备好的pdf模板,如图:

打开工具栏,找到准备表单

打开后,你就可以对你需要赋值的PDF表单进行字段的编辑,如下图:

5.使用Java 读取pdf文件

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;/*** Created by gf on 2019/4/20.*/
public class PDFUtil {public static void main(String[] args) throws Exception {test();System.out.println("success");}public static void test() throws IOException, DocumentException {// pdf模板String fileName = "E:/tools/停车场业务申请表.pdf";//读取pdfPdfReader reader = new PdfReader(fileName);ByteArrayOutputStream bos = new ByteArrayOutputStream();//将要生成的目标PDF文件名称PdfStamper ps = new PdfStamper(reader, bos);//PdfContentByte under = ps.getUnderContent(1);//设置中文字体BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);ArrayList<BaseFont> fontList = new ArrayList<BaseFont>();fontList.add(bf);//取出报表模板中的所有字段AcroFields fields = ps.getAcroFields();fields.setSubstitutionFonts(fontList);//对表单数据进行赋值fillData(fields, ps, data());//必须要调用这个,否则文档不会生成的ps.setFormFlattening(true);ps.close();OutputStream fos = new FileOutputStream("E:/new.pdf");fos.write(bos.toByteArray());fos.flush();fos.close();bos.close();}public static void fillData(AcroFields fields, PdfStamper ps, Map<String, String> data) throws IOException, DocumentException {// 为字段赋值,注意字段名称是区分大小写的for (String key : data.keySet()) {if (key.equals("image")){/*** 添加图片*/String imgpath = data.get(key);int pageNo = fields.getFieldPositions(key).get(0).page;Rectangle signRect = fields.getFieldPositions(key).get(0).position;float x = signRect.getLeft();float y = signRect.getBottom();// 读图片Image image = Image.getInstance(imgpath);// 获取操作的页面PdfContentByte under = ps.getOverContent(pageNo);// 根据域的大小缩放图片image.scaleToFit(signRect.getWidth(), signRect.getHeight());// 添加图片image.setAbsolutePosition(x, y);under.addImage(image);}else {String value = data.get(key);fields.setField(key, value);}}}public static Map<String, String> data() {Map<String, String> data = new HashMap<String, String>();data.put("name", "王强");data.put("idcard", "5303811111111111");data.put("phone", "18200000000");data.put("companyName", "XXXXXX公司");data.put("payTime", "2018年10月10日");//选择框的设置On为选中data.put("build", "On");data.put("house", "On");data.put("other", "Off");//        data.put("building", "18208817655");
//
//        data.put("floor", "18208817655");data.put("first", "On");//        data.put("again", "18208817655");//        data.put("change", "18208817655");data.put("expireTime", "2018年10月10日");data.put("plate", "京A10101");data.put("amount", "768.25");return data;}}

这样对pdf文件赋值就成功了,新手小白欢迎指正

java 根据PDF模板生成PDF文件并导出相关推荐

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

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

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

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

  3. Java使用Adobe Acrobat DC根据PDF模板生成PDF文件

    制作模板 首先需要安装Adobe Acrobat DC来制作模板 打开dc工具-->准备表单,然后打开你需要制作的pdf源文件 将文本域拖到你需要代码替换的位置 你可以双击文本域修改当前文本域的 ...

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

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

  5. java itext根据模板生成pdf

    很久没有更新过了,稍微闲一点,顺势总结下N久之前用到的小技巧. 这里生成pdf主要使用itext.jar.如想生成一个pdf,其实很简单的啦!第一种:全部使用代码生成:第二种:根据pdf模板生成.当前 ...

  6. Java中操作pdf模板生成pdf

    [java] iText使用PDF模板生成输出PDF 项目需求涉及到操作pdf模板,根据生成好的模板向里面填充数据 用到的jar包是iText-5.0.6.jar 和iTextAsian.jar pd ...

  7. JAVA 使用Itext模板生成pdf,解决图片插入,文本域超出字体缩放,半自动换行

    1.前言 前一段时间遇到一个制作Pdf的业务,自己下来摸索了一下,基本上解决.将其中遇到的几个问题及解决方法做以记录,仅供大家参考. 首先在这里对于刚接触该类型业务的同学说明下,ItexPdf支持使用 ...

  8. java 根据word模板生成word文件

    Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...

  9. Java按照固定pdf模板生成pdf文件——itext

    第一步:生成pdf模板 先用word写好固定格式的文档,再利用wps将文档转成pdf文件,然后利用Adobe Acrobat DC(此工具是收费的,可以百度搜索进行破解)进行表单域编辑(如下图),编辑 ...

最新文章

  1. python xpath语法-python xpath 基本用法
  2. SAP 动态设置 GUI STATUS 灰色不可用 或者隐藏
  3. 【实施工程师】Wampserver64橙色无法启动【apache】问题
  4. 小程序引入的echarts过大如何解决_解决微信小程序引用echarts视图模糊的问题
  5. 初学者python笔记(列表的食用方法)
  6. html的兼容有哪些,HTML里需要兼容验证的浏览器有哪些
  7. pytorch---在训练中动态的调整学习率
  8. ★古今中外著名14大悖论
  9. 【2018.9.26】K-D Tree详解
  10. 自制操作系统:引导扇区的实现
  11. Python入门:使用turtle库 绘制时钟(经典画表)
  12. linux禁用137 138端口,如何关闭135、137、138、139、445端口方法
  13. bzoj:1922: [Sdoi2010]大陆争霸 (luogu 2446)
  14. 解决SecureCRT连接网络设备console口失败的问题
  15. 中国大学慕课python答案 北京理工大学_中国大学MOOC慕课_Python语言程序设计_慕课答案...
  16. “蔚来杯“2022牛客暑期多校训练营5-A Don‘t Starve
  17. iOS-CYLTabBarController【好用的TabbarController】
  18. 齿轮标准模数c语言编程,齿轮标准模数可以使用( )表示
  19. VSPD V9版(Virtual Serial Port Driver 9.0)
  20. 智慧交通,迎来产业谍战丨产业特稿

热门文章

  1. JS 四舍五入保留两位小数
  2. opencv图像处理—项目实战:文档扫描OCR识别
  3. 对偶问题和原问题的关系
  4. 微信小程序--wx-charts图表插件使用教程
  5. 自动秘钥密码(Autokey)
  6. 线程之interrupt
  7. MATLAB实现模拟推导π的值
  8. 什么是单例模式以及单例模式的几种实现
  9. 激光测距DL100通讯线连接
  10. MobPush创建推送