java pdf模板_java通过PDF模板填写PDF表单
本文实例为大家分享了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表单相关推荐
- java post 登陆_java HttpPost 密码登录和提交表单的案例
记录java HttpPost 密码登录鉴权和提交表单的案例,使用的是httppost而不是HttpURLConnection httpost需要下面的依赖 org.apache.httpcompon ...
- 前端表单 word_如何使用Microsoft Word创建可填写的表单
前端表单 word Creating forms with Microsoft Word is easy, but the challenge comes in when you decide to ...
- html语言 怎么清除用户名 name= password=,在html页面中填写注册表单后,它会给出这个错误,并使用用户名和密码并将值存储在登录表单中...
在html页面中填写注册表单后,它会给出此错误,并使用用户名和密码并将值存储在登录表单中:TypeError at /login/ argument of type 'NoneType' is not ...
- wps python 自动化_Python3+Selenium+Chrome实现自动填写WPS表单
引言 本文通过python3.第三方python库Selenium和谷歌浏览器Chrome,完成WPS表单的自动填写. 开发环境配置 python3的安装:略,网上都有教程. Selenium的安装: ...
- java 字符串转pdf文件_java中根据模板生成pdf文件
原标题:java中根据模板生成pdf文件 阅读目录 简介 业务需求 引入jar包 pdf模板文件与方法参数 代码部分 总结归纳 回到顶部 简介 本文使用java引入apach提供的pdf操作工具生成p ...
- java语言for模板_java版的模板语言
最近心血来潮,开发了一个小工具,为了方便以后定制模板,打算使用模板语言,之前在项目中用过freemark和velocity,对于它们的语法都不喜欢,还是重造个轮子吧,哈哈. 先贴段代码吧: test ...
- java pdf库_Java中常用的操作PDF的类库
iText iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好的给合.使用 ...
- java读pdf一行_java 用itext解析一个pdf文件, 一行数据为一个对象,怎么解析
展开全部 一.iText介绍 iText是着名的开放源e68a843231313335323631343130323136353331333431363536码的站点sourceforge一个项目,是 ...
- java非必填字段跳过校验,avalon2表单验证,非必填字段在不填写的时候不能通过验证...
avalon2表单验证,非必填字段在不填写的时候不能通过验证 代码 var vm = avalon.define({ $id: "validate1", aaa : "& ...
- java处理表单变量_Java自学之SpringMVC:接收表单数据
学习目的:使用SpringMVC接收表单数据. Part 1 新建一个pojo. package pojo; public class Product { private int id; privat ...
最新文章
- kalilinux安装VMware Tools(水文)
- ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
- java 基础学习——基本语法(三)
- php 调用变量方法名,php中引用(变量和函数名前加符号)用法
- ITK:多输入不同的类型
- caffe.pb.h丢失问题:
- 基于tomcat集群做session共享
- MySQL Cluster 群集安装环境介绍
- 【基础】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 02 - 路由
- 关于按字寻址和按字节寻址的理解
- Netty使用kryo序列化传输对象
- canal 增量订阅mysql消息
- 基于行政区划的百度个性化地图及遥感影像栅格瓦片下载合成器(可叠加行政区划,适合用作科研遥感影像附图)
- 关于火狐浏览器国际版和国内版的说明
- 计算机显示器模糊,显示器模糊,我来教您电脑显示器模糊怎么办
- ChatGPT的注册和使用教程
- JDO:查询你的数据
- kali2021安装GVM(openVAS)
- 基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程
- 【干货】动力电池热管理设计流程和方法(11页ppt)
热门文章
- wamp3.2.6以上版本控制面板时间不正确的解决方法
- (二)直流电压源和交流电压源同时作用的二极管电路
- pure pursuit纯跟踪
- 苹果手机系统更新信号无服务器,苹果手机服务中心,新买的苹果手机居然无信号...
- 个人账目管理系统(一)数据库连接
- 众包模式,互联网寒冬里的一把火
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java智慧民政服务平台xl2r9
- C语言数据类型以及占用比特位数
- 51单片机电子秤(HX711模块 + LCD1602)
- 联想一体机DNS服务器未响应,本地诊断dns服务器未响应怎么解决 处理电脑本地诊断dns服务器未响应的方法...