硬核!Java 实现数据动态插入,生成 PDF,2024新鲜出炉阿里巴巴面试真题

Java中的PDF生成 在这个数字化时代,PDF文件已成为传递信息的重要方式。无论是合同、报告,还是技术文档,PDF都因其跨平台兼容性和固定格式而备受青睐。那么,你是否想过如何使用Java生成PDF呢?今天,我们将深入探讨Java中的PDF生成技术,让你轻松掌握这一技能,成为职场中的技术达人。在深入讨论技术细节之前,我们先来简单了解一下PDF。PDF,全称为Portable Document Format,是由Adobe公司在1993年推出的一种文件格式。 阅读详情

3)这时需要用到一个叫:Adobe Acrobat DC的软件(可以白嫖7天_),具体操作如下:

用Adobe Acrobat DC打开我们刚才改过名字的PDF文件,点击右下角的“更多工具”按钮

到下面这个页面再点击“准备表单”按钮

4)接下来就需要详细的配置你的数据源了

数据源即:你代码中实体类中对应的数据(注意字段一定要一一对应),配置完毕就可以保存进行下面的代码编写工作了。

2、代码的编写(假定我们实体类什么的都已经编写完成、数据通过前端传入获取、模板位置在E盘根目录下名字为:车辆维修审批单.pdf)
导入jar包:

com.itextpdf

itextpdf

5.5.13

实现生成PDF、数据插入、导出

@RegisterToSMP(serviceDisplay = “预览页面PDF下载”)

@RequestMapping(value = “/DM/gwclwxsq/qygl/exportPDF$m=query.service”,method =RequestMethod.POST)

public String exportPdf(@RequestBody GwclwxsqBean gwclwxsqBean , HttpServletResponse response) throws UnsupportedEncodingException {

// 1.指定解析器

System.setProperty(“javax.xml.parsers.DocumentBuilderFactory”,

“com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl”);

String filename=“车辆维修审批单.pdf”;

String path=“e:/”;

response.setContentType(“application/pdf”);

response.setHeader(“Content-Disposition”, “attachment;fileName=”

+ URLEncoder.encode(filename, “UTF-8”));

OutputStream os = null;

PdfStamper ps = null;

PdfReader reader = null;

try {

os = response.getOutputStream();

// 2 读入pdf表单

reader = new PdfReader(path+ “/”+filename);

// 3 根据表单生成一个新的pdf

ps = new PdfStamper(reader, os);

// 4 获取pdf表单

AcroFields form = ps.getAcroFields();

// 5给表单添加中文字体 这里采用系统字体。不设置的话,中文可能无法显示

BaseFont bf = BaseFont.createFont(“C:/WINDOWS/Fonts/SIMSUN.TTC,1”,

BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

form.addSubstitutionFont(bf);

// 6查询数据================================================

Map<String, String> data = new HashMap<String, String>();

data.put(“commitTime”, gwclwxsqBean.getCommitTime());

data.put(“driver”, gwclwxsqBean.getDriver());

data.put(“carId”, gwclwxsqBean.getCarId());

data.put(“carType”, gwclwxsqBean.getCarType());

data.put(“repairAddress”, gwclwxsqBean.getRepairAddress());

data.put(“repairCost”,gwclwxsqBean.getRepairCost());

data.put(“project”, gwclwxsqBean.getProject());

data.put(“fwbzzxfzrYj”, gwclwxsqBean.getFwbzzxfzrYj());

data.put(“fgldspYj”, gwclwxsqBean.getFgldspYj());

data.put(“remarks”, gwclwxsqBean.getRemarks());

// 7遍历data 给pdf表单表格赋值

for (String key : data.keySet()) {

form.setField(key,data.get(key).toString());

}

ps.setFormFlattening(true);

log.info(“PDF导出成功****”);

} catch (Exception e) {          log.error(“PDF导出失败****”);

e.printStackTrace();

} finally {

try {

ps.close();

reader.close();

os.close();

} catch (Exception e) {

e.printStackTrace();

}

}

return null;

}

3、测试

二、Java实现Excel生成和数据插入、导出

这个比较简单,直接上代码(假定你的实体类、查询什么的都已经写好)注意:实体类一个是你自己的数据实体类还有一个是你导出时表格中对应的实体类

我们以一个真实的公司业务来举个例子(一个统计疫情登记人员信息的Excel导出功能)。

另外,利用注解 + 反射优雅的实现通用 Excel 导入导出(通用版附源码):

利用注解 + 反射优雅的实现通用 Excel 导入导出(通用版附源码)

https://blog.yoodb.com/yoodb/article/detail/1734

1)表头对应实体类ExportYqfkdj.java:

import lombok.Data;

/**

* description:

* @author: zhouhong

* @version: V1.0.0

* @date: 2021年1月14日 下午3:05:54

*/

@Data

public class ExportYqfkdj {

/**

* 序号

*/

private Integer xuhao;

/**

* 姓名

*/

private String xingming;

/**

* 证件号码

*/

private String zjhm;

/**

* 联系电话

*/

private String lxdh;

/**

* 申请人工作单位

*/

private String sqrGzdw;

/**

* 是否接触过疑似病例

*/

private String sfjcgysbl;

/**

* 当前是否与居家隔离人员同住

*/

private String sfyjjglrytz;

/**

* 当前状态

*/

private String dqzt;

/**

* 当前健康状态

*/

private String dqjkzt;

/**

* 当前体温

*/

private String dqtw;

/**

* 当前所在地址

*/

private String dqszdz;

/**

* 当前居住地址

*/

private String dqjzdz;

/**

* 提交时间

* */

private String tjsj;

}

2)Service层

/**

* 导出

* @param yqfkdjBean

* @author zhouhong

* @return

* @throws Exception

*/

@Transactional(rollbackFor = { Exception.class })

public DataResult exporYqfkdj(YqfkdjBean yqfkdjBean) throws Exception {

DataResult result = new DataResult();

List list = new ArrayList();

try {

/* 查询导出信息 */

result = getYqfkMhCXQuery(yqfkdjBean);

SimpleDateFormat df = new SimpleDateFormat(“yyyyMMddhhmmssSSS”);

for (int i = 0; i < result.getTotalcount(); i++) {

ExportYqfkdj dmKhfwdcDtjlZxDto = new ExportYqfkdj();

dmKhfwdcDtjlZxDto = ObjectUtil.parsePojo(result.getResults().get(i), ExportYqfkdj.class);

dmKhfwdcDtjlZxDto.setXuhao(i + 1);

list.add(dmKhfwdcDtjlZxDto);

}

String filepath = “D:/疫情防控信息” + df.format(new Date()) + “.xlsx”;

if (System.getProperty(YqfkdjUtils.Wjdz.NAME).toLowerCase().startsWith(YqfkdjUtils.Wjdz.LI)

|| System.getProperty(YqfkdjUtils.Wjdz.NAME).toLowerCase().startsWith(YqfkdjUtils.Wjdz.LIN)) {

filepath = “/home/Tomcat/temp/” + df.format(new Date()) + “.xlsx”;

}

EasyExcel.write(filepath, ExportYqfkdj.class).head(head()).sheet().doWrite(list);

result.setResults(list);

result.setSuccess(true);

result.setMsg(filepath);

} catch (Exception e) {

result.setSuccess(false);

result.setMsg(YqfkdjUtils.Cytx.DCSB);

e.printStackTrace();

throw e;

}

return result;

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。

注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

互联网工程师必备的面试1000题

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。

最新“美团+字节+腾讯”一二三面问题,挑战一下你能走到哪一面?

N-1712039821476)]

最后

看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。

注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友

[外链图片转存中…(img-j1Jpb9q6-1712039821476)]

互联网工程师必备的面试1000题

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。

[外链图片转存中…(img-WooFxB4K-1712039821476)]

Java动态生成pdf文件(用于实时生成电子证书) 1.首先,新建一个word文档,内容如下,另存为pdf格式,我的命名:mytest.pdf。 2.用Adobe Acrobat Pro 打开刚刚制作的pdf文件。如下图: 3.点击创建–>PDF表单–>使用当前文档–>使用当前文档,一直点下一步完成。(有的版本Adobe Acrobat Pro软件右边有准备表单,直接点击准备表单是同样的效果) 4.上面好多给框,双击黑框可以修改名称,还可以设置字体大小,如下图 5.图片的地方没有黑框,我们可以在空白处点击右键,选择文本域,给 阅读详情

相关推荐

Java生成PDF和Excel解决方案指南

本文还有配套的精品资源,点击获取 简介:在IT行业中,生成PDF和Excel文件是数据展示和报告生成的重要任务。Java作为后端编程语言,通过多种库如Apache PDFBox、iText、Flying Saucer以及Apache POI,提供了生成和操作这些文件格式的能力。本项目提供了一系列的代码示例和具体步骤,涵盖了如何使用Java创建PDF和Excel文件,包括添加...

weixin_42602726的博客 1991

java生成PDF(图片,模板,表格)

java生成pdf(单模板、多模板+图片+表格,包括页头/页脚及水印)

qq_45699784的博客 3万+

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

东城绝神 1079

【教程】如何使用Java生成PDF文档?

PDF文档的生成通常包括两个步骤,首先需要使用Java代码创建一个PDF文档对象,然后向文档中添加内容。要生成PDF文档,我们可以使用多种Java开源库,如iText、Apache PDFBox和Flying Saucer等。在本教程中,我们将使用iText库来生成PDF文档。iText是一个流行的开源Java库,它提供了创建PDF文档所需的所有功能。本教程介绍了如何使用Java和iText库生成PDF文档。我们首先介绍了如何创建文档对象,然后向其中添加文本、图片和表格等内容。

Dark_orange的博客 1万+

S32DS使用手把手教程:从零实现CAN通信配置

深入讲解S32DS使用过程中如何从零开始配置CAN通信,涵盖关键步骤与实用技巧,帮助开发者快速上手S32DS使用中的常见问题与调试方法。

weixin_42405592的博客 1126

FPGA AXI DDR3读写时序调试与FIFO缓存实战解析

本文深入解析FPGA中AXI协议与DDR3的读写时序调试,重点探讨FIFO缓存在数据流控制中的关键作用。通过实战案例详细讲解突发传输中的地址对齐、数据分片等常见问题,并提供状态机设计、仿真波形分析和性能优化技巧,帮助开发者高效解决高速数据存储场景下的时序同步与数据一致性问题。

blockchain9miner的博客 1117

如何使用Java生成PDF文件

iText 2 以上版本有一个许可协议默认的iText字体设置不支持中文字体,需要下载字体包iTextAsian.jar,否则不能往PDF文档中输出中文字体。

loopnz的博客 1917

SAP MTO实战:从销售订单到生产订单的精准触发与配置详解

本文深入解析SAP系统中按订单生产(MTO)模式的核心流程与配置。详细阐述了如何通过精准配置物料主数据策略组、需求类型及计划策略(如策略50),实现从销售订单自动触发生产订单的完整链路。文章结合实战案例,指导用户打通销售与生产环节,并提供了关键事务代码与常见问题排查指南,助力企业实现以销定产,优化库存与成本控制。

weixin_29300931的博客 212

MuleSoft企业级AI编排:LLM集成的协议治理与韧性设计

大语言模型(LLM)在企业落地面临协议异构、治理缺失与系统韧性不足三大挑战。AI编排并非简单调度,而是实现多系统语义翻译、统一API治理与故障隔离的关键能力。基于MuleSoft的集成平台,可将SOAP、IDoc、MQ等传统协议统一为JSON事件流,通过API网关实现限流审计、DLP扫描与动态降级,并依托事务管理保障最终一致性。该模式已应用于合同审查、销售线索孵化等核心场景,支撑高可用、可审计、可回滚的生产级AI流程。本文聚焦LLM与企业遗留系统的深度协同机制。

weixin_33888907的博客 478

RK3568平台开发系列讲解(音频篇)配置声卡

📢本篇文章介绍如何配置声卡。

内核笔记 2448

把 LangGraph 当“工作流引擎”用:与传统 BPM 的差异与融合策略

首先,我们来回顾一下有限状态机(FSM)的基本定义——一个 FSM 可以用一个五元组MQΣδq0FMQΣδq0​FQQQ有限状态集合,包含 FSM 所有可能的状态;Σ\SigmaΣ有限输入字母表,包含 FSM 所有可能的输入;δ\deltaδ状态转移函数,定义了 FSM 从当前状态q∈Qq \in Qq∈Q接收输入σ∈Σσ∈Σ后,转移到的下一个状态q′∈Qq' \in Qq′∈Q,即δQ×Σ→QδQ×Σ→Q。

AI 原生应用开发的博客 227

JAVA实现纯代码导出PDF文件

突发奇想,发布一篇生成pdf的博客。最初做导出pdf文件还是刚接触项目的时候,从最边缘的功能开始..........想要实现导出PDF文件,但是当时已经生成了对应的Word文件,就想着直接把Word文件转为PDF就好了,还方便格式什么的都实现了,最后花了很大力气是实现了,但是效果不尽人意,就想着要不然直接生成PDF得了,后续就是看了一些博客,仿照着实现了导出PDF文件,但是自己最终实现效果有一点小瑕疵,一直没有空去有哈一下,最近有点空闲时间查了一下资料,把这个小瑕疵修复掉了。

weixin_45620445的博客 3618

第14.8章 高翔博士最新开源框架Lightning-LM源码解读(八):位姿平滑器PoseSmoother深度剖析,从原理到代码实现

本文深度解析了高翔博士开源框架Lightning-LM中的位姿平滑器PoseSmoother模块。该模块通过设置平滑因子,在保证位姿准确性的同时减少突变,使位姿变化更平稳。文章详细讲解了模块功能、数据流程和核心代码实现,包括构造函数、拷贝构造函数以及关键的PushDRPose和PushPose函数。重点分析了位姿平滑算法原理,涉及运动有效性校验、位姿队列维护和平滑因子调节等核心机制。此外还介绍了相关C++语法(如显式构造函数、默认拷贝构造)和优化方向。本解析为SLAM学习者提供了位姿平滑处理的实用实现范例。

行知SLAM 600

Java 生成各种 PDF 实战方案(图片、模板、表格)

点击关注公众号,Java干货及时送达????来源:blog.youkuaiyun.com/qq_45699784/article/details/127791747一、pom依赖二、生成pdf,模板和图片及动态生成表格三、生成pdf,模板和动态表格本篇文章的重点还是在讲通过java生成pdf,其实如果是单纯的模板填充挺简单的,但是又要填充模板还要动态生成表格就比较麻烦了,因为如果在模板中画表格的框去生成的话,超过模...

民工哥的博客 3457

Docker/Hyper-V/Wsl2等虚拟化组件一键切换工具 (附源码, Docker Desktop开发模式与三角洲游戏模式一键切换工具)

开启 Docker、Hyper-V 或 WSL2 后游戏无法启动?🎮💻 本文教你用一键批处理工具⚡快速切换“开发/游戏模式”,开发娱乐两不误!🔄✨

XiaoqiangClub的博客 698

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java生成PDF报表

【代码】java生成PDF报表。

m0_53267864的博客 631

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java实现生成各种PDF实战方案(图片、模板、表格)

本篇文章的重点还是在讲通过java生成pdf,其实如果是单纯的模板填充挺简单的,但是又要填充模板还要动态生成表格就比较麻烦了,因为如果在模板中画表格的框去生成的话,超过模板框的位置就会隐藏,我刚接到需求的时候也是有点难受,在网上也是找了大量的资料,研究了半天,发现好多都是你粘贴我,我粘贴你,最终我也算是搞成了,把这些整合一下,让大家用的好用一些,废话不多说,直接上代码!这里说一下啊,如果需要生成e...

Java精选 5848

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Java根据内容生成pdf文件(样式自定义,包含表格)】

根据内容生成pdf文件并上传至文件服务器

ITyangk的博客 1028

实操 !Java 生成各种 PDF 实战方案(图片、模板、表格)

本篇文章的重点还是在讲通过java生成pdf,其实如果是单纯的模板填充挺简单的,但是又要填充模板还要动态生成表格就比较麻烦了,因为如果在模板中画表格的框去生成的话,超过模板框的位置就会隐藏,我刚接到需求的时候也是有点难受,在网上也是找了大量的资料,研究了半天,发现好多都是你粘贴我,我粘贴你,最终我也算是搞成了,把这些整合一下,让大家用的好用一些,废话不多说,直接上代码!可以看到,我们在代码中并没有新开一页,只是加了一个间隙,就可以保证动态生成的表格和模板在一个页面,就此,基本上就算完成了。

竹林幽深 1763

java生成pdf文件

java生成pdf文件

susu1083018911的博客 5278

java实现生成PDF文件

1.PDF文件简介 PDF是可移植文档格式,是一种电子文件格式,具有许多其他电子文档格式无法相比的优点。PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。该格式文件还可以包含超文本链接、声音和动态影像等电子信息,支持特长文件,集成度和安全可靠性都较高。在系统开发中通常用来生成比较正式的报告或者合同类的电子文档。 2.生成P

xhga 2万+

java生成pdf

要在 Java 中生成 PDF 文件,可以使用一些第三方库,例如 iText、Apache PDFBox 或者 JasperReports。 iText 是一个开源的 PDF 库,可以用来生成、编辑和阅读 PDF 文件。使用 iText 生成 PDF 的基本流程如下: 创建一个 Document 对象。 使用 Document 对象的 add() 方法向 PDF 中添加文本、图像和其他内容。 创...

weixin_35748962的博客 2600

Java基于itextPDF实现pdf动态导出

现在的业务越来越复杂了,有些业务场景已经不能满足与EXCEL导出和WORD导出了,例如准考证打印,电子证书等等,这些都是动态数据导出的PDF。接下来我们就看一下怎么实现PDF的动态导出吧。

qq_45004609的博客 2246

JAVA生成PDF(itextpdf)

生成PDF

NCHUtianlin的博客 2964
上一篇: 破10万播放!SpringBoot+Vue前后端分离完整入门教程
下一篇: 你不知道的CSS霓虹灯文字总结,前端攒了一个月的面试题及解答
普通网友
博客等级 码龄5年 5792粉丝 608原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值