java pdf模板 表单 多页_java使用itext操作填充pdf模板,(根据一个模板生成多页数据)...
//我自己的数据源
final List rows = pa.getRows();
//每一条数据代表一个pdf表格
Listlist = new ArrayList();
try {
PdfStamper sd = null;
//记录行 !我的业务需求
int NO = 1;
//页码 !我的 业务需求
int page = 1;
//不确定数据有多少,所以要无限循环
while (true) {
String realPath = request.getSession().getServletContext().getRealPath("/");//项目路径
//使用微软雅黑字体显示中文
BaseFont chinessFont = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
PdfReader reader = new PdfReader(realPath + "/Template/receiveMoney.pdf");//读取
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfReader pdfReader = null;
//因为一页有25条数据
if (rows.size() > 26) {
//回去填充pdf的对象
PdfStamper ps = new PdfStamper(reader, bos);
AcroFields s = ps.getAcroFields();
for (int j = 0; j < 25; j++) {
int k = j + 1;
s.setField("NO" + k, NO + "");
BasicDBObject basicDBObject2 = (BasicDBObject) rows.get(0);
if (basicDBObject2.get("SN") != null) {
**//仔细看这里,具体填充**
s.setField("SN" + k, basicDBObject2.get("SN").toString());
}
if (basicDBObject2.get("CompanyName") != null) {
s.setFieldProperty("CompanyName" + k, "textfont", chinessFont, null); //设置中文格式
s.setField("CompanyName" + k, basicDBObject2.get("CompanyName").toString());
}
if (basicDBObject2.get("VATReward") != null) {
s.setField("VATReward" + k, basicDBObject2.get("VATReward").toString());
}
if (basicDBObject2.get("BusinessTaxReward") != null) {
s.setField("BusinessTaxReward" + k, basicDBObject2.get("BusinessTaxReward").toString());
}
if (basicDBObject2.get("BIncomeTaxReward") != null) {
s.setField("BIncomeTaxReward" + k, basicDBObject2.get("BIncomeTaxReward").toString());
}
if (basicDBObject2.get("PIncomeTaxReward") != null) {
s.setField("PIncomeTaxReward" + k, basicDBObject2.get("PIncomeTaxReward").toString());
}
if (basicDBObject2.get("ChangeTaxReward") != null) {
s.setField("ChangeTaxReward" + k, basicDBObject2.get("ChangeTaxReward").toString());
}
if (basicDBObject2.get("Totals") != null) {
s.setField("Totals" + k, basicDBObject2.get("Totals").toString());
}
if (basicDBObject2.get("WithholdTotal") != null) {
s.setField("WithholdTotal" + k, basicDBObject2.get("WithholdTotal").toString());
}
//TODO 扣除预付款及代扣费
/* if(basicDBObject2.get("SN")!=null){
s.setField("SN"+j, basicDBObject2.get("SN").toString());
}*/
if (basicDBObject2.get("SupportAmount") != null) {
s.setField("SupportAmount" + k, basicDBObject2.get("SupportAmount").toString());
}
NO++;
rows.remove(0);
}
BasicDBObject object = (BasicDBObject) rows.get(0);
Object startHandleDate = object.get("StartHandleDate");
if (startHandleDate != null && !startHandleDate.toString().equals("")) {
String[] split = startHandleDate.toString().split("-");
String s1 = split[0] + split[1];
int days = QzUtil.getDays(Integer.parseInt(split[0]), Integer.parseInt(split[1]));
s.setField("ReceiveData", split[0] + split[1] + "01" + "~" + s1 + days + "");
}
s.setField("User", getSessionUser().getUsername());
s.setField("CrrentData", DateUtil.getDay());
s.setField("Page", page + "");
page++;
ps.close();
pdfReader = new PdfReader(bos.toByteArray());
list.add(pdfReader);
//没到25条的
} else {
PdfStamper ps = new PdfStamper(reader, bos);
AcroFields s = ps.getAcroFields();
for (int j = 0; j < rows.size(); j++) {
//填充模板pdf
int k = j + 1;
s.setField("NO" + k, NO + "");
BasicDBObject basicDBObject2 = (BasicDBObject) rows.get(j);
if (basicDBObject2.get("SN") != null) {
s.setField("SN" + k, basicDBObject2.get("SN").toString());
}
if (basicDBObject2.get("CompanyName") != null) {
s.setFieldProperty("CompanyName" + k, "textfont", chinessFont, null); //设置中文格式
s.setField("CompanyName" + k, basicDBObject2.get("CompanyName").toString());
}
if (basicDBObject2.get("VATReward") != null) {
s.setField("VATReward" + k, basicDBObject2.get("VATReward").toString());
}
if (basicDBObject2.get("BusinessTaxReward") != null) {
s.setField("BusinessTaxReward" + k, basicDBObject2.get("BusinessTaxReward").toString());
}
if (basicDBObject2.get("BIncomeTaxReward") != null) {
s.setField("BIncomeTaxReward" + k, basicDBObject2.get("BIncomeTaxReward").toString());
}
if (basicDBObject2.get("PIncomeTaxReward") != null) {
s.setField("PIncomeTaxReward" + k, basicDBObject2.get("PIncomeTaxReward").toString());
}
if (basicDBObject2.get("ChangeTaxReward") != null) {
s.setField("ChangeTaxReward" + k, basicDBObject2.get("ChangeTaxReward").toString());
}
if (basicDBObject2.get("Totals") != null) {
s.setField("Totals" + k, basicDBObject2.get("Totals").toString());
}
if (basicDBObject2.get("WithholdTotal") != null) {
s.setField("WithholdTotal" + k, basicDBObject2.get("WithholdTotal").toString());
}
if (basicDBObject2.get("SupportAmount") != null) {
s.setField("SupportAmount" + k, basicDBObject2.get("SupportAmount").toString());
}
NO++;
}
BasicDBObject object = (BasicDBObject) rows.get(0);
Object startHandleDate = object.get("StartHandleDate");
if (startHandleDate != null && !startHandleDate.toString().equals("")) {
String[] split = startHandleDate.toString().split("-");
String s1 = split[0] + split[1];
int days = QzUtil.getDays(Integer.parseInt(split[0]), Integer.parseInt(split[1]));
s.setField("ReceiveData", split[0] + split[1] + "01" + "~" + s1 + days + "");
}
s.setField("User", getSessionUser().getUsername());
s.setField("CrrentData", DateUtil.getDay());
s.setField("Page", page + "");
page++;
ps.close();
pdfReader = new PdfReader(bos.toByteArray());
list.add(pdfReader);
// sd = new PdfStamper(pdfReader, response.getOutputStream());
break;
}
}
//上面已经获得了pdf的每一页,这里我只需要合并成为一个pdf,然后返回
Document document = new Document();
PdfCopy copy = new PdfCopy(document, response.getOutputStream());
document.open();
for (int k = 0; k < list.size(); k++) {
PdfReader pdfReader = list.get(k);
document.newPage();
copy.addDocument(pdfReader);
}
copy.close();
} catch (Exception e) {
e.printStackTrace();
}
java pdf模板 表单 多页_java使用itext操作填充pdf模板,(根据一个模板生成多页数据)...相关推荐
- java pdf模版的遍历_java使用itext操作填充pdf模板
一.先创建pdf模板 1.先用word做出界面 image.png 2.再转换成pdf格式 image.png image.png 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf ...
- java哈希表单例使用_java 、HashMap 和单例
前段时间在项目中遇到一个问题.当多个系统同时运行时,大部分系统能够良好运转,部分却卡死在了启动界面.以下是我解决该问题的步骤和总结: 1.复现问题.重新走了一遍出问题的过程,发现问题的确存在.说明这个 ...
- python 自动填充表单,如何在Django / Python中自动填充PDF表单?
I have PDF forms that I want to autopopulate with data from my Django web application and then offer ...
- itext文本域自动换行_Java导出Pdf格式表单
前言 作为开发人员,工作中难免会遇到复杂表单的导出,接下来介绍一种通过Java利用模板便捷导出Pdf表单的方式 模拟需求 需求:按照下面格式导出pdf格式的学生成绩单 准备工作 Excel软件 Ado ...
- 黑客登录界面科幻黑色主题网页模板表单验证代码
黑客登录界面科幻黑色主题网页模板表单验证代码 效果: html代码: <!DOCTYPE html> <html lang="en"><head> ...
- 用java写注册表单_利用HTML表单标签编写一个注册页面
今天我们来写一个注册页面 form表单 先来利用表单标签制作一个简单的注册页面,给大家说说标签的结构: 页面结构大体就是这样子的~ 利用HTML表单标签编写一个注册页面 表单标签: 所有需要提交到服务 ...
- java表单单击路径_Form表单中的action路径问题,form表单action路径《jsp---Servlet路劲问题》这个和上一个《jsp---Servlet》文章有关...
Form表单中的action路径问题,form表单action路径 今天刚接触web,在用jsp和servlet做一个简单的登陆的时候在Form表单action属性和method属性的一些问题: 我遇 ...
- 小博老师解析Java核心技术点 ——表单令牌(一)
2019独角兽企业重金招聘Python工程师标准>>> [理论知识] 我们在网站开发的过程中,经常需要会使用到form表单,表单提供了丰富的客户端与服务器端交互的控件.但是在开发过程 ...
- itext7 给PDF增加表单域并设置值
给pdf增加表单域,支持中文,如需之前其他字体只需将ttf文件放入到项目的font文件夹下即可 具体请参考我在码云上托管的项目:https://gitee.com/shisenlin/tool
最新文章
- 2011-11-27
- Oracle 验证A表的2个字段组合不在B表2个字段组合里的数据
- 百度地图API使用之实现定位
- 专访格灵深瞳CTO赵勇:为 计算机视觉 赋予智慧的光芒
- XWork ParameterInterceptor类绕过安全限制漏洞-解决1
- java记事本课程设计,java记事本课程设计
- Android之JNI DETECTED ERROR IN APPLICATION: illegal class name ‘XXX‘的错误解决方法
- 转:智能音箱市场深度报告:怎么大家都在抢这个两亿小蛋糕?
- 用户体验——南通大学教务学生管理系统
- J2EE WEBWORK FRAMEWORK安全隐患
- 5.1.4 SELECT+RIGHT JOIN读取数据
- GoogLeNet的心路历程(二)
- 学习MiniGui之多线程机制【转】
- unix--Tripwire 应用
- 斐波那契数列(剑指offer)
- 图解机器学习算法(7) | 随机森林分类模型详解(机器学习通关指南·完结)
- 听风的插件-集成到设置中
- 【计算机网络】路由器与交换机
- python培训班时间 费用-python培训班要多少钱?
- RWEQ模型的土壤风蚀模数估算、其变化归因分析