大家好今儿给大家带来的是使用itextpdf在pdf模板中插入对应数据

目录

  • 大家好今儿给大家带来的是使用itextpdf在pdf模板中插入对应数据
  • 1.需求描述
  • 2.操作Adobe Acrobat DC完成pdf域对象的添加
  • 3.代码部分(可直接用)
  • 4.测试
  • 5.总结

1.需求描述

在pdf模板中插入数据,大家都知道pdf是不可编辑的,在做这个需求的时候要借助到一个工具那就是 Adobe Acrobat DC 专门操作pdf的然后给对应的pdf加上对应的文本域对象和我们java bean中的属性名称一样,这样就可以再pdf中插入对应的数据了,这个软件可以再百度上搜一下下载一个就行。

2.操作Adobe Acrobat DC完成pdf域对象的添加

1.首先安装完成这个软件后我们打开软件点击准备表单,选择需要添加域对象的pdf

2.打开完成后我们可以看到上方有很的选项,直接点击文本域即可

3.名称中的key很重要必须和代码中的数据key一样,(表单域一定要选可见才能看到)向这样以此类推,把所有需要添加的文本域都加上后我们可以直接上代码了。

3.代码部分(可直接用)

注意:
字体
BaseFont.createFont(“C:/Windows/Fonts/simfang.ttf”, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 字体的话可以把simfang.ttf复制一份放到项目里或者云存储上用的时候去拿。

如果放到项目里的话需要放在static里,代码如下
BaseFont.createFont(new ClassPathResource(“static/simfang.ttf”).getPath(), BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

         <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.1</version></dependency>
@RequestMapping("/pdf")
@RestController
public class PdfControllerTest {@Autowiredprivate HttpServletRequest request;@Autowiredprivate HttpServletResponse response;private void pdfExport(Map<String, String> inputMap) {// 模板路径String templatePath = "C:\\Users\\dxl\\Desktop\\测试.pdf";File file = new File(templatePath);if (!file.exists()) {try {file.createNewFile();} catch (IOException e) {e.printStackTrace();}}PdfReader reader;ByteArrayOutputStream bos;PdfStamper stamper;OutputStream out = null;try {Map<String, String> datemap = inputMap;BaseFont bf = BaseFont.createFont("C:/Windows/Fonts/simfang.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);// 输出流response.setContentType("application/pdf");response.setHeader("Content-Disposition","attachment;fileName=" + URLEncoder.encode(file.getName(), "UTF-8"));out = new BufferedOutputStream(response.getOutputStream());// 读取pdf模板reader = new PdfReader(templatePath);bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);AcroFields form = stamper.getAcroFields();//文字类的内容处理form.addSubstitutionFont(bf);for (String key : datemap.keySet()) {String value = datemap.get(key);form.setField(key, value);}stamper.setFormFlattening(false);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 | DocumentException e) {System.out.println(e);} finally {try {assert out != null;out.close();} catch (IOException e) {e.printStackTrace();}}}@RequestMapping(value = "/getPdf", method = RequestMethod.GET)@ApiOperation("getPdf")public void getPdf() throws IOException {/*** map 中的key 要和 pdf中的域名称key 保持一样*/Map<String, String> map = new HashMap<>();map.put("name", "dxl测试测试测试测试强啊!!!!");map.put("age", "100");map.put("adder", "测试测试测试测试");this.pdfExport(map);}

4.测试

访问接口

打开模板pdf

5.总结

操作pdf模板插入数据需要借助Adobe Acrobat DC工具完成文本域的添加在文本域中设置对应的key,在代码中的key保持一样。

使用itextpdf在pdf模板中插入对应数据相关推荐

  1. java在pdf模板中插入数据

    一,准备工作 1,需要下载一个工具,Adobe Accrobat Pro DC 2,准备一个word文档,然后保存为pdf格式 这边需要插入数据的地方要用下划线,不然识别不到: 3,在Adobe Ac ...

  2. Vue在HTML模板中插入JS数据

    Time: 20190911 插值方式传递数据 即在HTML中用{{ xxx }}插入在JS中定义的数据. <!DOCTYPE html> <html lang="en&q ...

  3. 向pdf文件中插入图片及文字 java实现

    向pdf文件中插入图片及文字 引入itextpdf相关依赖 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> ...

  4. 使用iTextPdf为Pdf模板填充表单项

    说明 日常开发中,通常会有动态填充Pdf表单的需求,程序可根据用户的输入或后台数据库的内容,动态.批量向Pdf模板中填充内容. 这里简单介绍一下Pdf模板的制作,以及通过iTextPdf组件给pdf ...

  5. itextpdf通过pdf模板生成pdf文件

    itextpdf通过pdf模板生成pdf文件,设置粗体字体 1.创建pdf模板 2.使用模板生成pdf 3.itext自带的字体列表 4.遇到的坑 1.创建pdf模板 可以使用PDFFescape网站 ...

  6. 如何快速在PDF文件中插入图片

    在 PDF文件中插入图片我优先想到了 Adobe Acrobat DC,胜任此项工作完全 OK.但是有个问题,Acrobat 会自动识别 PDF 中的文字.如果有手写字迹经过 Acrobat 识别再保 ...

  7. java向Word模板中替换书签数据,插入图片,插入复选框,插入Word中表格的行数据,删除表格行数据

    java向Word模板中替换书签数据,插入图片,插入复选框,插入Word中表格的行数据,删除表格行数据 使用插件:spire.doc 创建工具类,上代码: import com.spire.doc.D ...

  8. ajax从mysql提取数据在html中_Python骚操作,提取pdf文件中的表格数据!

    在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...

  9. php 重复写入数据,完美解决Thinkphp3.2中插入相同数据的问题

    问题描述 今天在使用TP3.2插入数据的时候,为了避免插入相同的数据(所谓相同的数据,其主键相同或者是唯一索引的字段相同),我创建的索引如下图,主键索引为自增字段,不可能出现重复,即唯一索引可能会出现 ...

最新文章

  1. pandas模块学习笔记2--基本功能
  2. python测试代码运行时间_10种检测Python程序运行时间、CPU和内存占用的方法
  3. stata面板数据gmm回归_【stata】面板GMM估计
  4. spring storedProcedure 使用
  5. 操作系统实验以及课程设计
  6. oracle参数文件、控制文件、数据文件、日志文件的位置及查询方法
  7. deepin nginx连接php,利用docker运行nginx加上本机的php-fpm。访问html文件正常,但是访问php文件就报错404...
  8. Gridview 鼠标悬浮光棒效果
  9. linux环境配置与使用合集
  10. JSONPath 解析 JSON 内容详解(翻译自 github)
  11. 加加速度matlab,关于加加速度的若干机械运动分析及MATLAB模拟
  12. 哪些因素会影响数据质量
  13. 【语音识别】基于matlab MFCC+IPC特征+SVM中英语种识别【含Matlab源码 612期】
  14. 【51单片机】往返流水灯代码
  15. H.266/VVC代码学习:xCheckRDCostAffineMerge2Nx2N函数
  16. java opencv 人脸相似度,opencv 比较两张图的相似度
  17. linux必备软件合集
  18. wincap安装内幕
  19. readyState的5种状态含义
  20. Excel-查找与引用函数

热门文章

  1. Windows磁盘管理工具Diskpart之一 管理基本磁盘
  2. STM32单片机蓝牙APP手势语音温控电风扇落地扇人体感应
  3. 甲方安全之安卓App第三方加固对比
  4. 拜日式精准引导词_瑜伽 拜日式引导词 分享,这些知识你不一定知道
  5. 微信转账2020假图片_2020新版微信头像下载-2020新版微信头像图片大全 v7.0.20
  6. 驱动新手指南(帮助)
  7. 【QMT策略编写】如何优雅地调教QMT量化平台编写量化策略(使用notepad++、pycharm、vscode等外部IDE编写量化交易代码)
  8. 获取自然周;一年中总的周数,以及当前日期处于第几周
  9. 第38篇:Checkmarx代码审计/代码检测工具的使用教程(1)
  10. 网站服务以及部署网站论坛discuz与网络论坛WordPress