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文件的方法相关推荐

  1. Java动态生成pdf文件(用于实时生成电子证书)

    1.首先,新建一个word文档,内容如下,另存为pdf格式,我的命名:mytest.pdf. 2.用Adobe Acrobat Pro 打开刚刚制作的pdf文件.如下图: 3.点击创建–>PDF ...

  2. java动态生成pdf文件(使用itext编辑pdf)

  3. java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件

    简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...

  4. Java读取pdf模板,并动态生成pdf文件,如动态生成准考证

    Java读取pdf模板,并动态生成pdf文件,如动态生成准考证 ​ 前几天遇到了一个生成准考证的需求,并提供用户下载,然后百度了一圈还是觉得使用itextpdf这个框架好用点.但是还需要找到一个能创建 ...

  5. 如何动态生成pdf文件?

    pdfService系统 一. 背景 在许多开发需求中都有动态生成pdf文件的需求,例如根据已有的json字符串渲染到一个表格中,然后生成对应的PDF文档,以往的解决方法是调用许多个接口生产pdf文件 ...

  6. python数据生成pdf,Python生成pdf文件的方法

    摘要:这篇Python开发技术栏目下的"Python生成pdf文件的方法",介绍的技术点是"python生成pdf文件.python生成pdf.生成pdf文件.Pytho ...

  7. java 模板生成PDF文件 复选框勾选

    java 模板生成PDF文件 复选框勾选 // pdf填充时要有第三个参数s.setField("A", On, true);

  8. java使用world模板动态生成PDF文件

    根据项目需求,需要用到一个功能,根据页面参数需要动态的生成一个world,并将world生成两份PDF文件,一份正式文件,一份临时的电子文件(带有二维码,扫描可以下载正式文件的电子版本).同时上传到文 ...

  9. java使用flex生成swf_flex动态生成矢量swf字体--java动态生成swf文件

    前言 相信很多在线设计的前端WEB应用会用到字体作为素材的案例,丰富多样的字体一般是部署在服务器端让用户去选择,而且能动态部署,使用客户端字体显然是不可取的: 现状 然而中文字体动不动就几个M,做过f ...

最新文章

  1. Mysql中S 锁和 X 锁的区别
  2. jQuery对下拉框Select操作总结
  3. 更新android应用到最新版本
  4. java 实现汉字转换拼音_JAVA实现汉字转拼音功能代码实例
  5. [007] 详解 .NET 程序集
  6. JAVA进阶教学之(集合)
  7. 大数据开发笔记(三):Mapreduce
  8. 双缓冲-- double framebuffer
  9. electron编译nodejs模块的方法
  10. Hugging Face Course-Introduction学习小记 (part1)
  11. erp软件涉及哪些计算机技术?,ERP软件应该学习哪些内容?
  12. jquery提交表单错误
  13. 关于jqui datepicker 使用enter选择日期后 点击input 没有打开日期控件问题
  14. 会计信息质量可靠性的案例_浅谈会计信息可靠性(一)
  15. 从战略到执行:业务领先模型 BLM 战略篇「市场洞察」
  16. Layui Form 如何主动验证表单是否通过
  17. python怎么输入括号
  18. 图片上添加自定义标记,可点击,可删除,可长按移动
  19. CentOS清理tmp下临时文件
  20. 验证码----svg-captcha

热门文章

  1. 2013华为你知道多少?
  2. 偷偷修复漏洞 苹果要求研究员噤声
  3. js 判断当前的手机系统类型
  4. 小米手机锁屏适配性总结
  5. 中医教你怎么睡好觉,睡个养生觉!
  6. python使用matplotlib绘图
  7. (附源码)ssm+mysql+基于ssm协同过滤推荐算法的电影院购票系统 毕业设计131124
  8. python end用法_python end用法
  9. Python中end作用
  10. Vungle激励广告接入——最白话,手把手教你做系列。