本文实例为大家分享了java通过PDF模板填写PDF表单的具体代码,包括图片,供大家参考,具体内容如下

需要用到的java包:

itext.jar、iTextAsian.jar的JAR包。这个包里面定义了与中文输出相关的一些文件。

编写的表单如下:

import java.io.ByteArrayOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

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.AcroFields;

import com.itextpdf.text.pdf.BaseFont;

import com.itextpdf.text.pdf.PdfContentByte;

import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfStamper;

/**

* pdf工具类

* @author MOSHUNWEI

* @since 2018-02-01

*/

public class PDFUtil {

/**

* 根据模板生成pdf

* @param data Map(String,Object)

* @return

*/

public static boolean createPDF(String path,Map data) {

PdfReader reader = null;

AcroFields s = null;

PdfStamper ps = null;

ByteArrayOutputStream bos = null;

try {

reader = new PdfReader("D:\\test.pdf");

bos = new ByteArrayOutputStream();

ps = new PdfStamper(reader, bos);

s = ps.getAcroFields();

/**

* 使用中文字体 使用 AcroFields填充值的不需要在程序中设置字体,在模板文件中设置字体为中文字体 Adobe 宋体 std L

*/

BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", false);

/**

* 设置编码格式

*/

s.addSubstitutionFont(bfChinese);

// 遍历data 给pdf表单表格赋值

for (String key : data.keySet()) {

s.setField(key,data.get(key).toString());

}

// 如果为false那么生成的PDF文件还能编辑,一定要设为true

ps.setFormFlattening(true);

/**

* 添加图片

*/

String imgpath="D:/n5.jpg";

int pageNo = s.getFieldPositions("img").get(0).page;

Rectangle signRect = s.getFieldPositions("img").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);

@SuppressWarnings("resource")

FileOutputStream fos = new FileOutputStream("d:\\shouju_fb.pdf");

fos.write(bos.toByteArray());

return true;

} catch (IOException | DocumentException e) {

System.out.println("读取文件异常");

e.printStackTrace();

return false;

}finally {

try {

bos.close();

ps.close();

reader.close();

} catch (IOException | DocumentException e) {

System.out.println("关闭流异常");

e.printStackTrace();

}

}

}

public static void main(String[] args) {

Map data = new HashMap();

data.put("id", "12312321");

data.put("name", "小帅哥");

data.put("sex", "男");

data.put("age", "21");

PDFUtil.createPDF("D:/n5.jpg",data);

}

}

还有相应的编辑pdf表单的工具,默认用Adobe Acrobat。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java pdf模板_java通过PDF模板填写PDF表单相关推荐

  1. java post 登陆_java HttpPost 密码登录和提交表单的案例

    记录java HttpPost 密码登录鉴权和提交表单的案例,使用的是httppost而不是HttpURLConnection httpost需要下面的依赖 org.apache.httpcompon ...

  2. 前端表单 word_如何使用Microsoft Word创建可填写的表单

    前端表单 word Creating forms with Microsoft Word is easy, but the challenge comes in when you decide to ...

  3. html语言 怎么清除用户名 name= password=,在html页面中填写注册表单后,它会给出这个错误,并使用用户名和密码并将值存储在登录表单中...

    在html页面中填写注册表单后,它会给出此错误,并使用用户名和密码并将值存储在登录表单中:TypeError at /login/ argument of type 'NoneType' is not ...

  4. wps python 自动化_Python3+Selenium+Chrome实现自动填写WPS表单

    引言 本文通过python3.第三方python库Selenium和谷歌浏览器Chrome,完成WPS表单的自动填写. 开发环境配置 python3的安装:略,网上都有教程. Selenium的安装: ...

  5. java 字符串转pdf文件_java中根据模板生成pdf文件

    原标题:java中根据模板生成pdf文件 阅读目录 简介 业务需求 引入jar包 pdf模板文件与方法参数 代码部分 总结归纳 回到顶部 简介 本文使用java引入apach提供的pdf操作工具生成p ...

  6. java语言for模板_java版的模板语言

    最近心血来潮,开发了一个小工具,为了方便以后定制模板,打算使用模板语言,之前在项目中用过freemark和velocity,对于它们的语法都不喜欢,还是重造个轮子吧,哈哈. 先贴段代码吧: test ...

  7. java pdf库_Java中常用的操作PDF的类库

    iText iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好的给合.使用 ...

  8. java读pdf一行_java 用itext解析一个pdf文件, 一行数据为一个对象,怎么解析

    展开全部 一.iText介绍 iText是着名的开放源e68a843231313335323631343130323136353331333431363536码的站点sourceforge一个项目,是 ...

  9. java非必填字段跳过校验,avalon2表单验证,非必填字段在不填写的时候不能通过验证...

    avalon2表单验证,非必填字段在不填写的时候不能通过验证 代码 var vm = avalon.define({ $id: "validate1", aaa : "& ...

  10. java处理表单变量_Java自学之SpringMVC:接收表单数据

    学习目的:使用SpringMVC接收表单数据. Part 1 新建一个pojo. package pojo; public class Product { private int id; privat ...

最新文章

  1. kalilinux安装VMware Tools(水文)
  2. ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
  3. java 基础学习——基本语法(三)
  4. php 调用变量方法名,php中引用(变量和函数名前加符号)用法
  5. ITK:多输入不同的类型
  6. caffe.pb.h丢失问题:
  7. 基于tomcat集群做session共享
  8. MySQL Cluster 群集安装环境介绍
  9. 【基础】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 02 - 路由
  10. 关于按字寻址和按字节寻址的理解
  11. Netty使用kryo序列化传输对象
  12. canal 增量订阅mysql消息
  13. 基于行政区划的百度个性化地图及遥感影像栅格瓦片下载合成器(可叠加行政区划,适合用作科研遥感影像附图)
  14. 关于火狐浏览器国际版和国内版的说明
  15. 计算机显示器模糊,显示器模糊,我来教您电脑显示器模糊怎么办
  16. ChatGPT的注册和使用教程
  17. JDO:查询你的数据
  18. kali2021安装GVM(openVAS)
  19. 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程
  20. 【干货】动力电池热管理设计流程和方法(11页ppt)

热门文章

  1. wamp3.2.6以上版本控制面板时间不正确的解决方法
  2. (二)直流电压源和交流电压源同时作用的二极管电路
  3. pure pursuit纯跟踪
  4. 苹果手机系统更新信号无服务器,苹果手机服务中心,新买的苹果手机居然无信号...
  5. 个人账目管理系统(一)数据库连接
  6. 众包模式,互联网寒冬里的一把火
  7. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java智慧民政服务平台xl2r9
  8. C语言数据类型以及占用比特位数
  9. 51单片机电子秤(HX711模块 + LCD1602)
  10. 联想一体机DNS服务器未响应,本地诊断dns服务器未响应怎么解决 处理电脑本地诊断dns服务器未响应的方法...