//我自己的数据源

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模板,(根据一个模板生成多页数据)...相关推荐

  1. java pdf模版的遍历_java使用itext操作填充pdf模板

    一.先创建pdf模板 1.先用word做出界面 image.png 2.再转换成pdf格式 image.png image.png 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf ...

  2. java哈希表单例使用_java 、HashMap 和单例

    前段时间在项目中遇到一个问题.当多个系统同时运行时,大部分系统能够良好运转,部分却卡死在了启动界面.以下是我解决该问题的步骤和总结: 1.复现问题.重新走了一遍出问题的过程,发现问题的确存在.说明这个 ...

  3. python 自动填充表单,如何在Django / Python中自动填充PDF表单?

    I have PDF forms that I want to autopopulate with data from my Django web application and then offer ...

  4. itext文本域自动换行_Java导出Pdf格式表单

    前言 作为开发人员,工作中难免会遇到复杂表单的导出,接下来介绍一种通过Java利用模板便捷导出Pdf表单的方式 模拟需求 需求:按照下面格式导出pdf格式的学生成绩单 准备工作 Excel软件 Ado ...

  5. 黑客登录界面科幻黑色主题网页模板表单验证代码

    黑客登录界面科幻黑色主题网页模板表单验证代码 效果: html代码: <!DOCTYPE html> <html lang="en"><head> ...

  6. 用java写注册表单_利用HTML表单标签编写一个注册页面

    今天我们来写一个注册页面 form表单 先来利用表单标签制作一个简单的注册页面,给大家说说标签的结构: 页面结构大体就是这样子的~ 利用HTML表单标签编写一个注册页面 表单标签: 所有需要提交到服务 ...

  7. java表单单击路径_Form表单中的action路径问题,form表单action路径《jsp---Servlet路劲问题》这个和上一个《jsp---Servlet》文章有关...

    Form表单中的action路径问题,form表单action路径 今天刚接触web,在用jsp和servlet做一个简单的登陆的时候在Form表单action属性和method属性的一些问题: 我遇 ...

  8. 小博老师解析Java核心技术点 ——表单令牌(一)

    2019独角兽企业重金招聘Python工程师标准>>> [理论知识] 我们在网站开发的过程中,经常需要会使用到form表单,表单提供了丰富的客户端与服务器端交互的控件.但是在开发过程 ...

  9. itext7 给PDF增加表单域并设置值

    给pdf增加表单域,支持中文,如需之前其他字体只需将ttf文件放入到项目的font文件夹下即可 具体请参考我在码云上托管的项目:https://gitee.com/shisenlin/tool

最新文章

  1. 2011-11-27
  2. Oracle 验证A表的2个字段组合不在B表2个字段组合里的数据
  3. 百度地图API使用之实现定位
  4. 专访格灵深瞳CTO赵勇:为 计算机视觉 赋予智慧的光芒
  5. XWork ParameterInterceptor类绕过安全限制漏洞-解决1
  6. java记事本课程设计,java记事本课程设计
  7. Android之JNI DETECTED ERROR IN APPLICATION: illegal class name ‘XXX‘的错误解决方法
  8. 转:智能音箱市场深度报告:怎么大家都在抢这个两亿小蛋糕?
  9. 用户体验——南通大学教务学生管理系统
  10. J2EE WEBWORK FRAMEWORK安全隐患
  11. 5.1.4 SELECT+RIGHT JOIN读取数据
  12. GoogLeNet的心路历程(二)
  13. 学习MiniGui之多线程机制【转】
  14. unix--Tripwire 应用
  15. 斐波那契数列(剑指offer)
  16. 图解机器学习算法(7) | 随机森林分类模型详解(机器学习通关指南·完结)
  17. 听风的插件-集成到设置中
  18. 【计算机网络】路由器与交换机
  19. python培训班时间 费用-python培训班要多少钱?
  20. RWEQ模型的土壤风蚀模数估算、其变化归因分析

热门文章

  1. NVIDIA Riva中文手册 (四) —— Riva ASR自动语音识别API的使用
  2. 二叉树的遍历 及求深度、叶子数
  3. python实现椭圆等分
  4. Erasure code 原理
  5. 小程序怎么开通流量主
  6. 【基础篇】详解Zookeeper客户端Curator
  7. 〖产品思维训练白宝书 - 核心竞争力篇⑨〗- 产品经理核心竞争力解读之产品经理的规划能力对普通人的启发
  8. uniapp 封装时间选择器组件
  9. MICCAI 2022中的医学扩散模型
  10. Python的对象和类型