java动态生成pdf文件的方法
java动态生成pdf文件
文章目录
- java动态生成pdf文件
- 前言
- 一、生成pdf模板
- 二、使用步骤
- 1.使用jar包
- 2.pdf实现方法
- 总结
前言
java开发过程中难免会遇到生成文件的需求,这里简单介绍一下关于pdf格式的文件的动态生成方法
一、生成pdf模板
既然要动态生成文件了,肯定要先设计模板,设置变量,如此才能进行下一步操作。
1.首先,你需要生成一个pdf文件,介绍一个在线工具(https://app.xunjiepdf.com/) 当然,你也可以用word直接另存,但是可能会达不到预期的效果
2.模板设计好之后就是进行设置变量了,在线工具和下载软件的方式都可以 介绍两种:
2.1 https://www.pdfescape.com/open/(简单试用就好,使用效果并不是很友好,可以设置的字体也很少)
2.2工具下载 Adobe Acrobat Pro DC(非常友好了,而且设置各种字体、大小) 还有其他的很多在线工具和软件就不介绍了。
二、使用步骤
1.使用jar包
自行下载,也可根据我最后提供的网址进行下载
iText-2.1.7.jar、itextasian-2.1.7.jar、itext-rtf-2.1.7.jar
或者通过maven引入
maven依赖:
<dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version></dependency><dependency><groupId>cn.lesper</groupId><artifactId>iTextAsian</artifactId><version>3.0</version></dependency><dependency><groupId>com.lowagie</groupId><artifactId>itext-rtf</artifactId><version>2.1.7</version></dependency>
2.pdf实现方法
代码如下(示例):
package com.example.random.testpackage.service;import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;public class TestDemo {public static void main(String[] args) throws Exception {export();System.out.println("生成完成");}public static void export(){try {// pdf模板所在路径,就是网站制作好后下载的pdf模板路径String fileName = "E:\\download.pdf";PdfReader reader = new PdfReader(fileName);ByteArrayOutputStream bos = new ByteArrayOutputStream();PdfStamper ps = new PdfStamper(reader, bos);// 使用中文字体BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);ArrayList<BaseFont> fontList = new ArrayList<BaseFont>();fontList.add(bf);AcroFields fields = ps.getAcroFields();fields.setSubstitutionFonts(fontList);fillData(fields, data());//必须要调用这个,否则文档会出现你不想出现的东西ps.setFormFlattening(true);ps.close();//生成pdf路径存放的路径OutputStream fos = new FileOutputStream("D:/result.pdf");fos.write(bos.toByteArray());fos.flush();fos.close();bos.close();}catch (Exception e){e.printStackTrace();}}/*** 填充模板中的数据*/public static void fillData(AcroFields fields, Map<String, String> data) {try {for (String key : data.keySet()) {String value = data.get(key);// 为字段赋值,注意字段名称是区分大小写的fields.setField(key, value);}} catch (Exception e) {e.printStackTrace();}}/*** 填充数据源* 其中data存放的key值与pdf模板中的文本域值相对应*/public static Map<String, String> data() {Map<String, String> data = new HashMap<String, String>();data.put("reqName", "申请人");data.put("reqDept", "申请部门");return data;}
}
参考文章:https://www.cnblogs.com/pxblog/p/13261187.html
总结
以上便是动态生成pdf文件的方法啦,并不是很复杂,只是在设置字体上耽误了不少时间。
我的功能要比这个复杂一些,是将模板放置在项目中,然后通过浏览器的方式下载。也遇到不少问题:比如pdf模板编译后损坏、下载后显示空白但通过pdf工具可以查看等。所幸都解决了,有兴趣的小伙伴可以等待我的更新哟。
java动态生成pdf文件的方法相关推荐
- Java动态生成pdf文件(用于实时生成电子证书)
1.首先,新建一个word文档,内容如下,另存为pdf格式,我的命名:mytest.pdf. 2.用Adobe Acrobat Pro 打开刚刚制作的pdf文件.如下图: 3.点击创建–>PDF ...
- java动态生成pdf文件(使用itext编辑pdf)
- java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件
简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...
- Java读取pdf模板,并动态生成pdf文件,如动态生成准考证
Java读取pdf模板,并动态生成pdf文件,如动态生成准考证 前几天遇到了一个生成准考证的需求,并提供用户下载,然后百度了一圈还是觉得使用itextpdf这个框架好用点.但是还需要找到一个能创建 ...
- 如何动态生成pdf文件?
pdfService系统 一. 背景 在许多开发需求中都有动态生成pdf文件的需求,例如根据已有的json字符串渲染到一个表格中,然后生成对应的PDF文档,以往的解决方法是调用许多个接口生产pdf文件 ...
- python数据生成pdf,Python生成pdf文件的方法
摘要:这篇Python开发技术栏目下的"Python生成pdf文件的方法",介绍的技术点是"python生成pdf文件.python生成pdf.生成pdf文件.Pytho ...
- java 模板生成PDF文件 复选框勾选
java 模板生成PDF文件 复选框勾选 // pdf填充时要有第三个参数s.setField("A", On, true);
- java使用world模板动态生成PDF文件
根据项目需求,需要用到一个功能,根据页面参数需要动态的生成一个world,并将world生成两份PDF文件,一份正式文件,一份临时的电子文件(带有二维码,扫描可以下载正式文件的电子版本).同时上传到文 ...
- java使用flex生成swf_flex动态生成矢量swf字体--java动态生成swf文件
前言 相信很多在线设计的前端WEB应用会用到字体作为素材的案例,丰富多样的字体一般是部署在服务器端让用户去选择,而且能动态部署,使用客户端字体显然是不可取的: 现状 然而中文字体动不动就几个M,做过f ...
最新文章
- Mysql中S 锁和 X 锁的区别
- jQuery对下拉框Select操作总结
- 更新android应用到最新版本
- java 实现汉字转换拼音_JAVA实现汉字转拼音功能代码实例
- [007] 详解 .NET 程序集
- JAVA进阶教学之(集合)
- 大数据开发笔记(三):Mapreduce
- 双缓冲-- double framebuffer
- electron编译nodejs模块的方法
- Hugging Face Course-Introduction学习小记 (part1)
- erp软件涉及哪些计算机技术?,ERP软件应该学习哪些内容?
- jquery提交表单错误
- 关于jqui datepicker 使用enter选择日期后 点击input 没有打开日期控件问题
- 会计信息质量可靠性的案例_浅谈会计信息可靠性(一)
- 从战略到执行:业务领先模型 BLM 战略篇「市场洞察」
- Layui Form 如何主动验证表单是否通过
- python怎么输入括号
- 图片上添加自定义标记,可点击,可删除,可长按移动
- CentOS清理tmp下临时文件
- 验证码----svg-captcha