借用spire.pdf进行pdf与ofd相互转化
spire.pdf for java 参考文档: https://www.e-iceblue.cn/spire-pdf-for-java-news.html

  • 依赖:
<dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf.free</artifactId><version>8.5.8</version>
</dependency>
  • pdf与ofd相互转化
    //ofd文件Content-Type内容public static final String fileType = "octet-stream";public static final String ofdType = "ofd";/*** @return* @Author xiangyong.zeng* @Description 转化ofd文件,为pdf文件,返回文件路径* @Date 18:05 2022/11/29* @Param**/public static String transOfdToPdf(String path) {if (StringUtils.isBlank(path)) {return null;}String pdfPath = null;if (path.toLowerCase().contains(fileType)) {pdfPath = path.toLowerCase().replace(fileType, "pdf");} else if (path.toLowerCase().contains("ofd")) {pdfPath = path.toLowerCase().replace("ofd", "pdf");}OfdConverter ofdConverter = new OfdConverter(path);ofdConverter.toPdf(pdfPath);return pdfPath;}/*** @return* @Author xiangyong.zeng* @Description ofd转pdf* @Date 17:10 2022/11/24* @Param**/public static byte[] transOfdToPdf(byte[] ofdBytes) {if (ofdBytes == null || ofdBytes.length <= 0) {logger.error("ofdBytes内容为空,或者内容错误,不允许进行pdf转化");return null;}String tempFolder = UUID.randomUUID().toString();String rootPath = System.getProperty("user.dir");String path = rootPath + "/" + "tempFolder/" + tempFolder + "/";//将ofd数组输出为ofd文件String ofdName = UUID.randomUUID() + ".ofd";FileUtil.fileToBytes(ofdBytes, path, ofdName);//读取ofd文件输出为pdf文件String pdfName = UUID.randomUUID() + ".pdf";OfdConverter ofdConverter = new OfdConverter(path + ofdName);ofdConverter.toPdf(path + pdfName);//读取pdf文件为数组File file = new File(path + pdfName);byte[] bytes = new byte[0];InputStream inputStream = null;try {inputStream = new FileInputStream(file);bytes = FileUtil.input2byte(inputStream);} catch (FileNotFoundException e) {e.printStackTrace();} finally {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}//删掉临时目录夹try {File parentFile = file.getParentFile();File[] files = parentFile.listFiles();Arrays.stream(files).forEach(item -> item.delete());parentFile.delete();} catch (Exception e) {}return bytes;}/*** @return* @Author xiangyong.zeng* @Description PDF数组转化OFD数组* @Date 11:39 2022/8/8* @Param**/public static byte[] transPdfToOfd(byte[] pdfBytes) {if (pdfBytes == null || pdfBytes.length <= 0) {logger.error("pdfBytes内容为空,或者内容错误,不允许进行ofd转化");return null;}long startTime = LocalDateTime.now().atOffset(ZoneOffset.of("+8")).toInstant().toEpochMilli();byte[] bytes;try {//构建PDF内容PdfDocument pdf = new PdfDocument();pdf.loadFromBytes(pdfBytes);//定义输出流ByteArrayOutputStream outputStream = new ByteArrayOutputStream();//PDF转存OFDpdf.saveToStream(outputStream, FileFormat.OFD);bytes = outputStream.toByteArray();logger.info("PDF转OFD格式成功,转化长度:{}", bytes.length);} catch (Throwable e) {logger.error("PDF转化OFD格式失败,失败原因:{}", e.getMessage());throw new RuntimeException("DF转化OFD格式失败");}long endTime = LocalDateTime.now().atOffset(ZoneOffset.of("+8")).toInstant().toEpochMilli();logger.info("pdf转化为ofd耗时:{} /毫秒", endTime - startTime);return bytes;}/*** @return* @Author xiangyong.zeng* @Description pdf byte数组转ofd文档输出* @Date 14:49 2022/8/8* @Param ofdPath ofd文档输出全路径**/public static void transPdfToOfd(byte[] pdfBytes, String ofdPath) {if (pdfBytes == null || pdfBytes.length <= 0) {logger.error("当前待转化的pdf文件错误,或者内容为空");throw new RuntimeException("pdf转ofd转化失败,pdf文件错误,pdf文件内容不能为空");}if (StringUtils.isBlank(ofdPath)) {logger.error("ofd文档输出地址不能为空");throw new RuntimeException("ofd文档输出地址不能为空");}long startTime = LocalDateTime.now().atOffset(ZoneOffset.of("+8")).toInstant().toEpochMilli();//构建PDF内容PdfDocument pdf = new PdfDocument();pdf.loadFromBytes(pdfBytes);pdf.saveToFile(ofdPath, FileFormat.OFD);long endTime = LocalDateTime.now().atOffset(ZoneOffset.of("+8")).toInstant().toEpochMilli();logger.info("pdf转化为ofd耗时:{} /毫秒", endTime - startTime);}/*** @return* @Author xiangyong.zeng* @Description pdf 转 ofd文档* @Date 14:51 2022/8/8* @Param pdfPath pdf文件全路径* @Param ofdPath ofd 输出全路径**/public static void transPdfToOfd(String pdfPath, String ofdPath) {if (StringUtils.isBlank(ofdPath) || StringUtils.isBlank(pdfPath)) {logger.error("pdf,ofd文档地址不能为空!请检查入参地址");throw new RuntimeException("pdf,ofd文档地址不能为空!请检查入参地址");}byte[] bytes = FileUtil.getBytesFromFile(new File(pdfPath));transPdfToOfd(bytes, ofdPath);}public static void main(String[] args) {transPdfToOfd("C:\\Users\\DELL\\Desktop\\JGRDXZS.pdf", "C:\\Users\\DELL\\Desktop\\JGRDXZS.ofd");}

java pdf与ofd文件相互转换相关推荐

  1. OFD文件怎么转PDF?ofd文件转换为pdf格式教程

    如果我们电脑里面装有wps软件,ofd文件可以通过WPS软件转换成PDF,以下为WPS转换的步骤说明: 现在已经有了非常好用的在线转换程序www.DataConvert.cn 可以直接处理 2维数组 ...

  2. java pdf 转txt文件怎么打开_纯Java实现PDF转txt文件

    展示这个Demo的原因是一哥们需要我帮他把一些PDF格式的资料转为txt,我在网上找了下在线的工具,都不好用,网上大多数的在线pdf转txt文件都需要付费,而免费的一次转换文件大小不能超过2M,比较痛 ...

  3. OFD怎么转换成PDF? OFD文件转换成Word方法推荐

    随着当前办公系统的不断优化,也衍生出很多特殊的文件格式.像之前我们聊过的caj文件,是针对论文打造的特殊文件格式,即对文件有了强大的安全系数保护,又可以满足用户的阅读需求.这一次我们要为广大用户们带来 ...

  4. java pdf 转txt文件_java – 使用iText将TXT文件转换为PDF(保持格式化)

    我正在尝试使用iText库将.txt文件转换为.pdf文件. 我面临的问题如下: 我在txt文件中有一个清晰的格式,类似于: TEXT ******************* Other text h ...

  5. java PDF/Word/Excel文件内容关键字检索

    JAVA程序 在PDF.Word.Excel 文件的内容中关键字检索功能(只能检索可编辑文字内容,内容里的图片等格式无法检索) 文件内容的获取不依赖于Windows环境,可在任意环境下运行程序进行检索 ...

  6. java pdf 转txt文件怎么打开_使用iText将TXT文件转换为PDF(保留格式)

    我正在尝试使用iText库将.txt文件转换为.pdf文件.我面临的问题如下: 我在txt文件中有清晰的格式,与此类似: TEXT ******************* Other text her ...

  7. java ofd文件转换图片

    是根据开源项目写的: https://gitee.com/ofdrw/ofdrw?_from=gitee_search 该ofdrw工具可以转换pdf.图片等,本文章主要介绍ofd文件使用ofdrw转 ...

  8. 基于Angularjs框架实现HTML5在线查看OFD文件

    我们在系统开发过程中,经常会遇到图片浏览,PDF,OFD文件浏览问题. 最近正需要开发此功能,在线查看OFD文件.查阅各种资料发现,其实OFD和PDF是同一类型文件,OFD就是中国版本的PDF. 下面 ...

  9. Java将OFD文件转PDF文件

    OFDRW 提供了将 OFD 文档导出为其他格式文档的能力,如导出为 PDF.图片.SVG.TXT.HTML 等. OFDRW 转换模块在 2.0.0 之后抽象了多种文档导出接口,使用统一的 API ...

最新文章

  1. linux下磁盘分区
  2. 《那些年啊,那些事——一个程序员的奋斗史》——59
  3. Fiori elements执行过程解析:When click go in table list, odata service is sent
  4. Spring Boot定制启动图案
  5. 华人数学家可以“恐怖”到什么程度?
  6. Visio各图形如何一键自动对齐?
  7. c语言枚举法求满射函数,实变函数论讲义
  8. Java 语言实现的 I/O 模型
  9. 华为 MateBook 笔记本 Linux 版正式开售
  10. java constructors_[译]understanding constructors
  11. 单总线和i2c总线结合实现数字温度计的设计c语言程序,1《单片机原理应用》课程设计指导书2010-6-8.doc...
  12. Java零拷贝四步曲——HeapByteBuffer与DirectByteBuffer
  13. 服务器控制台网页登录,云服务器管理控制台登录网站
  14. 跟着王道考研学计算机网络笔记(一):初步了解计算机网络
  15. Spring之Bean的作用域、使用外部属性文件、mchange-commons-java-0.2.11.jar下载
  16. SparkMLlib之二Basic Stastics
  17. python新建画布_Python tkinter Canvas画布完全攻略-Python
  18. java面试中掺水了,java软件工程师工作简历模板下载
  19. Java实现鉴权失败达到一定次数锁定IP并释放到期IP
  20. 单机版pc端车牌识别

热门文章

  1. Potplayer如何显示书签,书签编辑器
  2. leetcode【困难】460、LFU 缓存
  3. 蓝芽技术的原理和应用(2)(转)
  4. JDK8新特性Stream流使用详解
  5. 0x00007FFEB5D49149 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000
  6. python怎样实现量化选股?
  7. 1w存银行一年多少利息_100万存银行1年能有多少钱利息?
  8. 【Scratch考级99图】图12-等级考试scratch绘制 正八边形
  9. EN 14967:防水沥青防潮层—CE认证
  10. 服务器提取用户信息,获取客户端和服务器信息