项目需要生成PDF文件,在浏览器实现打印功能。这里只说明如何利用PDF文件模板写入数据

整个写入过程我分11步演示,演示过程中的PDF文件我打了马赛克(显示的PDF是公司项目文件),但不影响演示过程。

首先安装Adobe Acrobat DC。下载地址:https://pan.baidu.com/s/1BxjHtK5zAWBBsrOGZbEtdw

1.安装过程一路下一步,可以选择使用30天。安装完成,打开如下图:

2.我的Demo项目为Maven构建,需要依赖如下两个包:

com.itextpdf

itextpdf

5.5.5

com.itextpdf

itext-asian

5.2.0

3.准备PDF文件模板(你可以把自己创建一个只有表头没有内容的Excel文档来或者一个需要填写内容的Word文档来测试,把文档另存为,保存格式为PDF)

4.使用Acrobat DC打开保存的PDF文件,以下没有打码的下划线和冒号后面是我要用Java代码填写的内容。

5.窗口右侧下面有一个准备表单选项,点击之后界面如下:

6.点击开始按钮之后如下:

7.首先删除Acrobat DC自动生成的所有的fill控件(单机选中,按delete键删除),因为我发现使用fill控件,Java代码未能成功向模板文件中写入数据。删除之后,在顶部菜单有一个“添加文本域”的控件,点击一下,然后可以拖动控件到下划线上或者冒号后面。可以拖动设置控件大小,双击控件会打开一个对话框,在里面有个名称文本框,可以自定义控件名。如下图:

8.所有控件名称可以自定义,也可以使用默认名称(默认名称:Text+N)需要写入内容的地方都放好文本控件后点击左上角文件,另存为,保存到自己需要的目录。

9.Maven引入依赖后,创建测试类。完整代码如下:

package com.aijiao.demo.pdf;

import com.itextpdf.text.Document;

import com.itextpdf.text.DocumentException;

import com.itextpdf.text.pdf.*;

import java.io.ByteArrayOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

/**

* @author wuwei

* @date 2018/08/01

*/

public class PdfDemo {

public static void fillTemplate() {

// 模板路径

String templatePath = "E:\\工作\\模板\\模板.pdf";

// 生成的新文件路径

String newPDFPath = "E:\\工作\\模板\\测试.pdf";

PdfReader reader;

FileOutputStream out;

ByteArrayOutputStream bos;

PdfStamper stamper;

try {

out = new FileOutputStream(newPDFPath);

reader = new PdfReader(templatePath);

bos = new ByteArrayOutputStream();

stamper = new PdfStamper(reader, bos);

AcroFields form = stamper.getAcroFields();

Map map = new HashMap<>();

map.put("test1", "中国工商银行");

map.put("test2", "中国农业银行");

map.put("test3", "中国建设银行");

int i = 0;

java.util.Iterator it = form.getFields().keySet().iterator();

while (it.hasNext()) {

String name = it.next();

form.setField(name, map.get(name));

}

//true代表生成的PDF文件不可编辑

stamper.setFormFlattening(true);

stamper.close();

Document doc = new Document();

PdfCopy copy = new PdfCopy(doc, out);

doc.open();

PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);

copy.addPage(importPage);

doc.close();

} catch (IOException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

fillTemplate();

}

}

10.运行main方法,在输出下生产“测试.PDF”文件(我代码中的路径是我的桌面路径)其中的“测试.PDF”文件内容如下:

11.可以看到,我在代码中写入的数据已经成功生成到新的PDF文件中了。

java maven 读写pdf_Java向PDF模板写入数据相关推荐

  1. java maven 读写pdf_Java 在PDF中加盖骑缝章

    骑缝章是用于往来业务合同,以确保合同真实.有效的印章加盖方法,是一种防范风险的重要方式.在Java程序中,可以通过使用工具来辅助加盖这种骑缝章. 工具:Free Spire.PDF for Java ...

  2. java maven 读写pdf_java读取pdf内容

    展开全部 Java读取PDF文件:读取PDF文件中的文本内容:import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; i ...

  3. java pdf 报表_关于Java向PDF模板写入数据,以及java制作pdf报表的问题

    1.关于java向PDF模板写入数据 写的特别全一步一步来就行. (1)首先下载一个pdf编辑工具Adobe Acrobat DC (2)准备一个pdf模板文件(你可以把自己创建一个只有表头没有内容的 ...

  4. java maven 读写pdf_Java动态生成pdf文件(使用itext编辑pdf)

    一.创建pdf模板 使用PDFelement制作pdf模板(数据域的名称对应后面插入的key) 二.导入maven依赖 com.itextpdf itextpdf 5.5.13 com.itextpd ...

  5. java 实现向pdf模板写入数据。并重新生成一个新文件

    引入maven依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf< ...

  6. java poi 模板 导出_java poi 从服务器下载模板写入数据再导出

    最近写了一个,Excel 的 写入和导出.   需求是这样的.   在新建合同的时候,会有导出合同的数据,    导出的模板是固定的,,需要在模板里面写入合同的信息. first   :  下载模板 ...

  7. Java--依照PDF模板进行数据的填充并输出

    Java–依照PDF模板进行数据的填充并输出 今天因为有一个逻辑问题迟迟没有定下来,老板去了学习,所以闲着也是闲着,就抽空学习研究了下用Java输出PDF文件的技术. 引入相应的Jar包 这是导出pd ...

  8. poi读取excel多层表头模板写入数据并导出

    poi读取excel多层表头模板写入数据并导出 这两天刚好写excel,写了一份自定义表头的,写了一份模板的,这里展示一份读取excel模板写入数据并导出的 //title excel的名称 head ...

  9. Android iText向pdf模板插入数据和图片

    需求 这些日志在写App程序,有这么一个需求,就是需要生成格式统一的一个pdf文件,并向固定表格中填充数据,并且再在pdf中追加两页图片. 方案 手工设计一个pdf模板,这个具体步骤就不再赘述,可以网 ...

  10. itext通过pdf模板填充数据并调用打印机打印

    使用itext5对生成的pdf模板进行编辑填充数据,一种是通过绝对定位去做,简单的可以,通用性太差,第二种是通过pdf域来填充字段,通用性很强 在使用过程中遇到的问题: 网上都是通过这种字体设置中文的 ...

最新文章

  1. 信噪比与错误指数matlab,关于信噪比不符合理论值的问题
  2. HDB3的matlab编译码
  3. js——页面回到顶部
  4. 微型计算机c560,2010广东省计算机等级考试试题 二级C试题最新考试试题库
  5. PHP在金山游戏运营中的应用
  6. 利用python来求解网络的平均路径长度和聚类系数
  7. Oracle Assets Additions API--Sample Script(Invoices)
  8. 水晶报表中对某一栏位值进行处理_从主流报表工具的报价看报表行业的报价水深-----常用报表工具对比---主流报表价格对比...
  9. (一)CentOS Docker 安装
  10. 下载时,要关闭休眠功能
  11. html元素 按键精灵鼠标移动,按键精灵后台鼠标移动和点击脚本怎么制作。
  12. java实现pdf旋转_java生成pdf旋转_如何使用Java旋转PDF文档中的图像?
  13. 安卓开发颜色以及对应代码(转载)
  14. debian7 软件源更新
  15. 美国大学计算机科学与工程,美国大学研究生专业排名:计算机科学与工程
  16. Android录音转为MP2的实现
  17. 漫画电子电路读书笔记
  18. jquery input值发生变化时,时时触发事件 input propertychange 、 cheng
  19. 基于.Net平台C#的微信网页版API
  20. 2009年广东省行政测试真题

热门文章

  1. SQL Server表空间碎片化回收
  2. stm32f412新工程配置的记录
  3. js第1章JavaScript案例:改变网页背景颜色、验证用户输入的密码
  4. netbeans php 安装教程,Netbeans下载安装教程教程
  5. 【小技巧】Visio怎么调整页面,去掉白边?
  6. 使用Pinyin4Swift进行汉字拼音转换
  7. 基于nrf52832 mpu6050应用实例(7)
  8. 读书笔记之《价值》张磊
  9. [基本功]假设检验概念统计量一览
  10. mysql case when in_MySQL case when 使用