java maven 读写pdf_Java向PDF模板写入数据
项目需要生成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模板写入数据相关推荐
- java maven 读写pdf_Java 在PDF中加盖骑缝章
骑缝章是用于往来业务合同,以确保合同真实.有效的印章加盖方法,是一种防范风险的重要方式.在Java程序中,可以通过使用工具来辅助加盖这种骑缝章. 工具:Free Spire.PDF for Java ...
- java maven 读写pdf_java读取pdf内容
展开全部 Java读取PDF文件:读取PDF文件中的文本内容:import com.spire.pdf.PdfDocument; import com.spire.pdf.PdfPageBase; i ...
- java pdf 报表_关于Java向PDF模板写入数据,以及java制作pdf报表的问题
1.关于java向PDF模板写入数据 写的特别全一步一步来就行. (1)首先下载一个pdf编辑工具Adobe Acrobat DC (2)准备一个pdf模板文件(你可以把自己创建一个只有表头没有内容的 ...
- java maven 读写pdf_Java动态生成pdf文件(使用itext编辑pdf)
一.创建pdf模板 使用PDFelement制作pdf模板(数据域的名称对应后面插入的key) 二.导入maven依赖 com.itextpdf itextpdf 5.5.13 com.itextpd ...
- java 实现向pdf模板写入数据。并重新生成一个新文件
引入maven依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf< ...
- java poi 模板 导出_java poi 从服务器下载模板写入数据再导出
最近写了一个,Excel 的 写入和导出. 需求是这样的. 在新建合同的时候,会有导出合同的数据, 导出的模板是固定的,,需要在模板里面写入合同的信息. first : 下载模板 ...
- Java--依照PDF模板进行数据的填充并输出
Java–依照PDF模板进行数据的填充并输出 今天因为有一个逻辑问题迟迟没有定下来,老板去了学习,所以闲着也是闲着,就抽空学习研究了下用Java输出PDF文件的技术. 引入相应的Jar包 这是导出pd ...
- poi读取excel多层表头模板写入数据并导出
poi读取excel多层表头模板写入数据并导出 这两天刚好写excel,写了一份自定义表头的,写了一份模板的,这里展示一份读取excel模板写入数据并导出的 //title excel的名称 head ...
- Android iText向pdf模板插入数据和图片
需求 这些日志在写App程序,有这么一个需求,就是需要生成格式统一的一个pdf文件,并向固定表格中填充数据,并且再在pdf中追加两页图片. 方案 手工设计一个pdf模板,这个具体步骤就不再赘述,可以网 ...
- itext通过pdf模板填充数据并调用打印机打印
使用itext5对生成的pdf模板进行编辑填充数据,一种是通过绝对定位去做,简单的可以,通用性太差,第二种是通过pdf域来填充字段,通用性很强 在使用过程中遇到的问题: 网上都是通过这种字体设置中文的 ...
最新文章
- 信噪比与错误指数matlab,关于信噪比不符合理论值的问题
- HDB3的matlab编译码
- js——页面回到顶部
- 微型计算机c560,2010广东省计算机等级考试试题 二级C试题最新考试试题库
- PHP在金山游戏运营中的应用
- 利用python来求解网络的平均路径长度和聚类系数
- Oracle Assets Additions API--Sample Script(Invoices)
- 水晶报表中对某一栏位值进行处理_从主流报表工具的报价看报表行业的报价水深-----常用报表工具对比---主流报表价格对比...
- (一)CentOS Docker 安装
- 下载时,要关闭休眠功能
- html元素 按键精灵鼠标移动,按键精灵后台鼠标移动和点击脚本怎么制作。
- java实现pdf旋转_java生成pdf旋转_如何使用Java旋转PDF文档中的图像?
- 安卓开发颜色以及对应代码(转载)
- debian7 软件源更新
- 美国大学计算机科学与工程,美国大学研究生专业排名:计算机科学与工程
- Android录音转为MP2的实现
- 漫画电子电路读书笔记
- jquery input值发生变化时,时时触发事件 input propertychange 、 cheng
- 基于.Net平台C#的微信网页版API
- 2009年广东省行政测试真题