java 生成pdf文件(易上手版)
时间:2019-06-13
本文章向大家介绍java 生成pdf文件(易上手版),主要包括java 生成pdf文件(易上手版)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.引入相关pom依赖
<!--pdf start--> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.10</version> </dependency> <!-- https://mvnrepository.com/artifact/com.itextpdf/font-asian --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>font-asian</artifactId> <version>7.1.2</version> <scope>test</scope> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency> <!--pdf end-->
2.准备pdf 模板文件
准备表单 填写对应java字段
3.java生成(初步未优化版)
@GetMapping(value = "/makePdf") public AdusResponse makePdf() { Map<String,Object> params = new HashMap<>(); params.put("id",298); ReliefBillEntity entity = reliefBillFacade.selectReliefBillEntity(params); // 模板路径 String templatePath = "C:\\Users\\Administrator\\Desktop\\test.pdf"; // 生成的新文件路径 String newPDFPath = "C:\\Users\\Administrator\\Desktop\\b.pdf"; PdfReader reader; FileOutputStream out; ByteArrayOutputStream bos; PdfStamper stamper; try { out = new FileOutputStream(newPDFPath);// 输出流 reader = new PdfReader(templatePath);// 读取pdf模板 bos = new ByteArrayOutputStream(); stamper = new PdfStamper(reader, bos); AcroFields form = stamper.getAcroFields(); form.setField("reliefNumber",entity.getReliefNumber()); form.setField("supplierId",entity.getSupplierId().toString()); form.setField("reliefDate",entity.getReliefDate().toString()); form.setField("accPeriod",entity.getAccPeriod()); form.setField("orderNumber",entity.getReliefNumber()); form.setField("SKC",entity.getAccPeriod()); form.setField("chksheetId",entity.getChksheetId().toString()); form.setField("reliefType",entity.getReliefType().getDesc()); form.setField("oneType",entity.getOneType()); form.setField("twoType",entity.getOneType()); form.setField("reliefTypeDesc",entity.getReliefType().getDesc()); form.setField("number",entity.getOneType()); form.setField("price",entity.getOneType()); form.setField("reliefMoney",entity.getReliefMoney().toString()); form.setField("curCode",entity.getCurCode()); form.setField("auditor",entity.getAccPeriod()); form.setField("addTime",entity.getAddTime().toString()); form.setField("auditor2",entity.getAccPeriod()); stamper.setFormFlattening(false);// 如果为false那么生成的PDF文件还能编辑,一定要设为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 (Exception e) { System.out.println(1); } return new AdusResponse(SysConstants.ResponseCode.SUCCESS, "", null); }
最后提供模板文件与生成后的pdf文件截图
具体项目中需要注意资源的关闭,统计生成的文件可以放置文件服务器上统一提供链接地址进行下载等等。这里仅仅初步更具模板生成含数据的pdf文件。
这种方式的缺点:不够灵活,模板文件较为死板,不便于拓展。优点:能快速更具模板文件实现功能,难度低
原文地址:https://www.cnblogs.com/weixiaotao/p/11016002.html
- prompt() 方法,弹框带输入框
- Docker系列教程05-容器常用命令
- 数据分析利器-NumPy
- 【LEETCODE】模拟面试-134-Gas Station
- Docker系列教程17-默认bridge网络中配置DNS
- Docker系列教程16-network命令
- 【LEETCODE】模拟面试-206. Reverse Linked List
- Eslint检测出的问题如何自动修复
- 【LEETCODE】模拟面试-215. Kth Largest Element in an Array
- Docker系列教程15-Docker容器网络
- 数据挖掘
- Docker系列教程14-Docker数据持久化
- Docker 学习系列二之基本管理
- Docker系列教程13-Docker可视化管理工具
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
- 简单了解Python多态与属性运行原理
- 树莓派升级python的具体步骤
- keras中的loss、optimizer、metrics用法
- Django中F函数的使用示例代码详解
- 详解pandas获取Dataframe元素值的几种方法
- pandas数据处理之绘图的实现
- Pandas把dataframe或series转换成list的方法
- Django 构建模板form表单的两种方法
- 详解pandas.DataFrame.plot() 画图函数
- python中pandas库中DataFrame对行和列的操作使用方法示例
- PHP实现简易计算器功能
- DataFrame 数据合并实现(merge,join,concat)
- PHP ajax+jQuery 实现批量删除功能实例代码小结
- python对execl 处理操作代码