JAVA:实现Excel和PDF上下标

1、简介

最近项目需要实现26个小写字母的上下标功能,自己去网上找了所有Unicode的上下标形式,缺少一些关键字母,顾后面考虑自己创建上下标字体样式,以此来记录。

2、Excel

Excel本身是支持上下标,我们可以通过Excel单元格的样式来设置当前字体上下标,因使用的是POI的maven包,这边就以POI的样例实现。

首先pom.xml引用:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version>
</dependency>

实现上下标代码:

XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Sheet1");
XSSFRow row = sheet.createRow(0);
XSSFCell cell = row.createCell(0);XSSFFont font = workbook.createFont();
font.setTypeOffset(XSSFFont.SS_SUB); // 上标
font.setTypeOffset(XSSFFont.SS_SUPER);//下标XSSFRichTextString richTextString = new XSSFRichTextString("Hcu");
richTextString.applyFont(1, 2, font); // 设置第二个字符为上标 "c"
richTextString.applyFont(2, 3, font); // 设置第三个字符为下标 "u"cell.setCellValue(richTextString);
Path tempFile =  Paths.get("E:\\dist\\pdf0.xlsx");try(OutputStream os = Files.newOutputStream(tempFile)){workbook.write(os);logger.error("xssfWorkbook-end:" + tempFile.toAbsolutePath());
}

3、造字

因某些字母没有对应的上下标字形,所以通过FontCreate软件来造上下标,至于软件可以去网上下载破解版,还有就是Unicode指定的数量就那么多,所以我们可以通过改变已有Unicode编码字符来作为我们上下标的编码。

可以通过找到当前分支少的Unicode字符做插入:比如选中西里尔字母这个分类点击 插入->字符:
在这里插入图片描述
然后我们对已有的字符做修改和做删除自己造:
在这里插入图片描述
最后形成我们自己所需要的字符:
在这里插入图片描述

4、PDF

生成的PDF,采用开源的是开放源码的站点sourceforge一个项目itextpdf,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。因项目通过Excel来转PDF,但是因itextpdf无法识别Excel上下标,并且缺少了关键上下标。

首先pom.xml引用:

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.10</version>
</dependency>

输出中文,还要引入下面itext-asian.jar包:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通过java向jar写入新文件

文章目录 原始需求分析实施步骤引入依赖核心编码运行效果 原始需求 有网友提问&#xff1a; 我想在程序中动态地向同一个jar包中添加文件&#xff0c;比如&#xff0c;我的可执行jar包是test.jar,我要在它运行时生成一些xml文件并将这些文件添加到test.jar中,请问如何实现&…

细胞机器人系统的概念

摘要 本文讨论了一种新型机器人系统的理论和工程的概念基础。该系统由协作完成任务的自主机器人单元组成。本文在描述了该系统与细胞自动机和神经网络的相关性和差异后&#xff0c;建立了该系统的基础属性及其对机器人单元结构的影响、它们操作的空间以及它们完成全局任务的算法…

WebGL笔记:WebGL中JS与GLSL ES 语言通信,着色器间的数据传输示例:用鼠标控制点位

用鼠标控制点位 <canvas id"canvas"></canvas><!-- 顶点着色器 --> <script id"vertexShader" type"x-shader/x-vertex">attribute vec4 a_Position;void main() {// 点位gl_Position a_Position;// 尺寸gl_PointSize…

【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1问题总结

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1f338;文…

如何快速学习AdsPower RPA(2)——中级、高级部分

Tool哥继续给大家分享快速学习AdsPower RPA的方法。上一篇在这里&#xff0c;还没看过的小伙伴赶快补课去&#xff1a;如何快速学习AdsPower RPA&#xff08;1&#xff09;——简单、进阶部分 能进入到中级、高级阶段的学习&#xff0c;说明你自学能力超强&#xff01;只要跟着…

Sulfo-CY7 NHS ester荧光染料的合成与化学性质1603861-95-5

Sulfo-CY7 NHS ester的合成通常涉及多个有机合成步骤&#xff0c;包括在荧光染料的分子结构中引入特定的官能团&#xff0c;以确保其荧光性能和生物相容性。以下是Sulfo-CY7 NHS ester的合成和一些相关的化学性质&#xff1a; 合成过程&#xff1a;Sulfo-CY7 NHS ester的合成通…

java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

贪心算法-IPO问题

1、题目描述 给你一个启动资金w&#xff0c;和一个最大项目次数k。 然后&#xff0c;有两个数组&#xff0c;一个cost[]&#xff0c;里面记录了每个项目需要花费的资金。一个profit数组&#xff0c;里面记录了每个项目完成后可以获取的利润。然后请你计算出&#xff0c;给你一个…

编译原理简介

编译原理简介 编译原理的研究对于理解和设计编程语言、编译器和解释器都非常重要。它不仅可以提高程序的执行效率&#xff0c;还可以帮助开发人员更好地理解程序的运行机制。编译原理是计算机科学中的一个重要分支&#xff0c;研究的是编译器的设计和实现。对于从事编译器开发…

OpenGL之着色器

着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说&#xff0c;着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序&#xff0c;因为它们之间不能相互通信&#xff1b;它们之间唯一的沟通只有通过输入和…

【C++11保姆级教程】深入浅出异常说明符、异常操作符和lambda表达式

文章目录 前言一、异常说明符1.1异常说明符是什么&#xff1f;1.2异常说明符的格式1.3异常说明符的优势 二、异常操作符2.1异常操作符是什么&#xff1f;2.2异常操作符的使用2.3优势 二、Lambda表达式2.1Lambda表达式是什么&#xff1f;2.2各个部分的意义2.3示例代码2.4优势 总…

【SpringMVC】

SpringMVC技术与Servlet技术功能等同,均属于web层开发技术 优点&#xff1a;使用简单&#xff0c;开发快捷&#xff0c;灵活性强 入门&#xff1a; 依赖 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactI…

开发模式-敏捷开发

1. 概述 随着软件开发技术的不断发展&#xff0c;现在出现了很多种不同的开发模式&#xff0c;其实敏捷开发已经成为现在很多企业开发应用程序都想要选择的开发方案&#xff0c;那么什么是敏捷开发呢&#xff1f; 1.1 四种开发模式 1.1.1 瀑布式开发 瀑布式开发是一种老旧的…

66种智能优化算法跑23个基准测试函数

目录 1、66种智能优化算法 2 、23个标准测试函数 3 、多种智能优化算法在CEC2005上对比 3.1、 多个算法对比 3.2 单个算法运行 1、66种智能优化算法 将66种智能优化算法在23个经典测试函数上进行对比&#xff0c;这些智能优化算法包括一些高性能算法&#xff0c;如…

软件测试/测试开发丨python 多态与super 学习笔记

本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26828 python 多态与super 多态的概念 多态&#xff1a;Polymorphism 同名方法呈现多种行为 多态的表现 号 加法&#xff1a;数字 数字拼接&#xff1a;字符串 字符串合…

Spring基础与核心概念

Spring 是什么&#xff1f; 我们通常所说的 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;有着活跃而庞大的社区&#xff0c;这就是它之所以能长久不衰的原因。Spring 支持广泛的应⽤场景&#xff0c;它可以让…

Android中级——PackageManagerService和Intent

PackageManagerService和Intent PackageManagerServiceIntent PackageManagerService PMS扫描已安装的apk&#xff0c;解析其AndroidManifest.xml获取App相关信息&#xff0c;如下是其构造函数的相关片段 ...... if (partition.getPrivAppFolder() ! null) { //扫描系统应用…

大数据Doris(一):Doris概述篇

文章目录 Doris概述篇 一、前言 二、Doris简介

【数据仓库设计基础(四)】数据仓库实施步骤

文章目录 1&#xff0e;定义范围2&#xff0e;确定需求3&#xff0e;逻辑设计1&#xff09;建立需要的数据列表2&#xff09;识别数据源3&#xff09;制作实体关系图 4&#xff0e;物理设计1&#xff09;性能优化2&#xff09;数仓的拓展性 5&#xff0e;装载数据6&#xff0e;…

Vue封装全局SVG组件

1.SVG图标配置 1.安装插件 npm install vite-plugin-svg-icons -D 2.Vite.config.ts中配置 import { createSvgIconsPlugin } from vite-plugin-svg-icons import path from path export default () > {return {plugins: [createSvgIconsPlugin({// Specify the icon fo…