java使用Abobe Acrobat DC生成模板
作者:小码66 发布时间:2022-04-14 21:03:12
标签:Java,Abobe,Acrobat,DC,模板
一、利用word生成一个文档转成pdf
说明:转换成pdf格式
二、Abobe Acrobat DC图解
利用Abobe Acrobat DC打开pdf
步骤:文件 ---->创建------>创建表单----->选择文件(你转换成pdf文件)
这里是所要增加的文本域、图片域等功能按钮
在你需要的位置增加你说要的功能完成之后进行保存
三、java后台代码
环境maven
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.13</version>
<type>pom</type>
</dependency>
生成的模板文件放到适当的位置
所需要生成新的pdf代码
public @ResponseBody Object getFaceVerificationPdf(GzFaceVerification gzFaceVerification, HttpServletRequest request) throws IOException {
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
try (PdfDocument document = new PdfDocument(new PdfReader(
new ClassPathResource("static/moban.pdf").getInputStream()), new PdfWriter(outputStream))) {
PdfAcroForm pdfAcroForm = PdfAcroForm.getAcroForm(document, true);
//对图片进行处理(如果不处理在模板中显示不出图片)
PdfFormField pdfFormField = pdfAcroForm.getField("frontIdCardUrl");
InputStream is = new FileInputStream(new File(gzFaceVerification.getFrontIdCardUrl()));
String str = Base64.encodeBytes(StreamUtil.inputStreamToArray(is));
pdfFormField.setValue(str);
pdfAcroForm.addField(pdfFormField);
PdfFormField pdfFormField1 = pdfAcroForm.getField("reverseIdCardUrl");
InputStream is1 = new FileInputStream(new File(gzFaceVerification.getReverseIdCardUrl()));
String str1 = Base64.encodeBytes(StreamUtil.inputStreamToArray(is1));
pdfFormField1.setValue(str1);
pdfAcroForm.addField(pdfFormField1);
PdfFormField pdfFormField2 = pdfAcroForm.getField("photo");
InputStream is2 = new FileInputStream(new File(gzFaceVerification.getPhoto()));
String str2 = Base64.encodeBytes(StreamUtil.inputStreamToArray(is2));
pdfFormField2.setValue(str2);
pdfAcroForm.addField(pdfFormField2);
pdfAcroForm.getField("frontIdCardUrl").setValue(gzFaceVerification.getFrontIdCardUrl());
pdfAcroForm.getField("reverseIdCardUrl").setValue(gzFaceVerification.getReverseIdCardUrl());
pdfAcroForm.getField("photo").setValue(gzFaceVerification.getPhoto());
pdfAcroForm.getField("comparisonResults").setValue(gzFaceVerification.getComparisonResults());
pdfAcroForm.getField("createTime").setValue(gzFaceVerification.getCreateTime());
pdfAcroForm.flattenFields();
}
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_PDF);
httpHeaders.setContentDispositionFormData("attachment", "test.pdf", Charset.forName("UTF-8"));
return ResponseEntity.ok().headers(httpHeaders).body(outputStream.toByteArray());
}
}
来源:https://blog.csdn.net/qq_41971605/article/details/115701174
0
投稿
猜你喜欢
- 如下所示:public static void main(String[] args) {String str1 = "刘烨,孙坚
- 简介optional类是java8中引入的针对NPE问题的一种优美处理方式,源码作者也希望以此替代null。历史1965年,英国一位名为To
- 一、 通过JDK网络类Java.net.HttpURLConnection1.java.net包下的原生java api提供的http请求使
- 本文实例讲述了JAVA基于数组实现的商品信息查询功能。分享给大家供大家参考,具体如下:综合一维数组和二维数组的相关知识,以及数组排序的多种算
- 本文总结了Java的关键字与标识符。分享给大家供大家参考,具体如下:相关内容:关键字:定义特点用于定义数据类型的关键字用于定义流程控制的关键
- 编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得幸运观众的姓名。思路如
- 动态内存管理为什么存在动态内存分配我们到现在为止掌握的是什么样的内存开辟方式呢//创建一个变量int val = 20; &n
- Java * 要想了解Java * ,首先要了解什么叫做代理,熟悉设计模式的朋友一定知道在Gof总结的23种设计模式中,有
- 1.相关概念Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性。建
- 本文实例讲述了C#中动态数组用法。分享给大家供大家参考。具体分析如下:ArrayList是一种动态数组,其容量可随着我们的需要自动进行扩充.
- 前言本次示例代码的文件结构如下图所示。1. 导入依赖坐标在 order-service 的 pom.xml 文件中导入 Feign 的依赖坐
- 演示代码如下:package swt_jface.demo11; import org.eclipse.swt.SWT; import or
- 这篇文章主要介绍了通过实例解析JMM和Volatile底层原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 本文介绍了Java开发过程中日期相关操作,分享的代码如下:package jse;import java.io.UnsupportedEnc
- 先附上图片上传的代码jsp代码如下:<form action="${path}/upload/uploadPic.do&qu
- 哈喽大家好啊,我是Hydra。Spring作为项目中不可缺少的底层框架,提供的最基础的功能就是bean的管理了。bean的注入相信大家都比较
- 前言在产品发布前夕,经常因为编写各类设计文档感到心碎,倒不是难,而是比较繁琐,举例来说,像编写数据库文档这种操作来说,对于新手,甚至很多有一
- WebService是一种跨编程语言和跨操作系统平台的远程调用技术所谓远程调用,就是一台计算机a上的一个程序可以调用到另外一台计算机b上的一
- trim中prefix与suffix等标签用法1.prefix 前缀增加的内容2.suffix 后缀增加的内容3.prefixOverrid
- 一、前言最近自己在学习Spring boot的过程中开发了一个组件 multithreadpool-spring-boot-starter,