当前位置: 首页 > news >正文

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.lryc.cn/news/178526.html

相关文章:

  • AI写稿软件,最新的AI写稿软件有哪些
  • 干货:数据仓库基础知识(全)
  • 二分搜索简介
  • 虚拟车衣VR云展厅平台扩大了展览的触达范围
  • 云部署家里的服务器
  • 【利用冒泡排序的思想模拟实现qsort函数】
  • [plugin:vite:css] [sass] Undefined mixin.
  • 【论文阅读】大语言模型中的文化道德规范知识
  • 51单片机实训项目之产品数量计数器
  • Scala第七章节
  • C语言进程的相关操作
  • 数据结构学习系列之链式栈
  • too many session files in /var/tmp
  • 【7.0】打开未知来源安装应用
  • 安装ipfs-swarm-key-gen
  • BASH shell脚本篇5——文件处理
  • ElementUI之首页导航及左侧菜单(模拟实现)
  • Java开源工具库使用之Lombok
  • uboot启动流程涉及reset函数
  • 端口被占用怎么解决
  • python reportlab 生成多页pdf
  • word 多级目录的问题
  • python使用mitmproxy和mitmdump抓包之拦截和修改包(四)
  • 邓俊辉《数据结构》→ “2.6.5 二分查找(版本A)”之“成功查找长度”递推式推导
  • Linux文件查找,别名,用户组综合练习
  • 【MATLAB第77期】基于MATLAB代理模型算法的降维/特征排序/数据处理回归/分类问题MATLAB代码实现【更新中】
  • 第三章 图标辅助元素的定制
  • 【前端】ECMAScript6从入门到进阶
  • Android Shape设置背景
  • 什么是GraphQL?它与传统的REST API有什么不同?