JAVA:OFD Reader Writer 开源库技术解析

2024-01-22 21:28

本文主要是介绍JAVA:OFD Reader Writer 开源库技术解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、简述

OFD Reader & Writer 是一个由开源社区推动的 OFD 文件处理库,它旨在提供对 OFD 格式文件的读取和写入功能。这一开源项目为开发者提供了强大而灵活的工具,使得在应用程序中处理和生成 OFD 文件变得更加容易和高效
开源地址:https://toscode.mulanos.cn/ofdrw/ofdrw

  • OFD 文件读取
    OFD Reader & Writer 提供了高效的 OFD 文件读取功能,能够准确解析 OFD 文件的结构和内容,以便进行后续的处理和分析。

  • OFD 文件写入
    除了读取,OFD Reader & Writer 还支持 OFD 文件的生成和写入。开发者可以通过这个库创建、编辑并生成符合 OFD 标准的文件。

  • 高度模块化
    OFD Reader & Writer 设计为高度模块化,提供了丰富的 API 接口,使得开发者可以根据需要选择性地使用其中的功能,保持了库的轻量性和灵活性。

  • 开放扩展性
    这一库注重开放性,支持插件和扩展,使得开发者能够根据自身需求轻松扩展功能,满足不同场景的需求。

2、模块

根据《GB/T 33190-2016 电子文件存储与交换格式版式文档》标准实现版式文档OFD库,项目采用Maven模块管理,各模块如下:

  • ofdrw-core OFD核心API,参考《GB/T 33190-2016 电子文件存储与交换格式版式文档》实现的基础数据结构。
  • ofdrw-font 生成OFD字体相关。
  • ofdrw-layout OFD布局引擎库,用于文档构建和渲染。
  • ofdrw-pkg OFD文件的容器,用于文档的打包。
  • ofdrw-reader OFD文档解析器,用于OFD的反序列化以及签名签章。
  • ofdrw-sign OFD文档数字签章。
  • ofdrw-gm 用于支持签章模块需要的国密电子签章数据结构。
  • ofrw-crypto 用于实现《GM/T 0099-2020 开放版式文档密码应用技术规范》对OFD的密码相关功能。
  • ofdrw-gv OFDRW 所有模块所共用的全局变量。
  • ofdrw-converter OFD文档转换。
  • ofdrw-tool OFD文档工具,文档合并、裁剪、重组。
  • ofdrw-graphics2d 实现了AWT Graphics2D接口,生成OFD文档内容。
  • ofdrw-full 上述所有模块整合包,用于简化依赖引入

3、应用

这一库不仅具备对 OFD 文件的读取功能,还提供了强大的写入功能,为开发者提供全面的 OFD 文件处理解决方案。

3.1 引用

通过Maven项目引用相关依赖:

<dependency><groupId>org.ofdrw</groupId><artifactId>ofdrw-full</artifactId><version>2.2.6</version>
</dependency>

备注:OFDRW 将持续保证API的向下兼容,您可以放心的升级OFDRW库至最新版本。

3.2 创建

public class HelloWorld {public static void main(String[] args) throws IOException {Path path = Paths.get("HelloWorld.ofd");try (OFDDoc ofdDoc = new OFDDoc(path)) {Paragraph p = new Paragraph("你好呀,OFD Reader&Writer!");ofdDoc.add(p);}System.out.println("生成文档位置: " + path.toAbsolutePath());}
}

在这里插入图片描述

3.3 解析

通过OFD文件路径,将当前文件解析,并且获取相关OFD文件信息:

public static OFDReader ofdParse(String ofdFilePath) throws Exception{Path input = Paths.get(ofdFilePath);return  new OFDReader(input);
}

3.4 根目录

获取解析完成的ofd根目录:

String sysAbsPath = ofdReader.getOFDDir().getSysAbsPath();

3.5 打包

在使用个过程中有时候需要修改ofd文件的内容,我们可以将他解压后,然后通过OFDRW提供的接口重新打包成OFD文件:

public static void jar(Path jarPath, Path targetFilePath) throws IOException {OFDDir ofdDir = new OFDDir(jarPath);ofdDir.jar(targetFilePath);
}

3.6 转换

在开发工程中很多文件重新去构造OFD会浪费大量的时间,我们可以轻松的从已有的PDF直接转成OFD:

public static void convertBy2D(String resourceFilePath, String targetFilePath) throws Exception{Path src = Paths.get(resourceFilePath);Path dst = Paths.get(targetFilePath);try (PDFConverter converter = new PDFConverter(dst)) {converter.convert(src);}
}

4、其他解决方案

4.1 HTML5

HTML5前端预览解决方案: DLTech21/ofd.js . https://github.com/DLTech21/ofd.js

  • jszip解压。
  • fast-xml-parser解析xml为json数据。
  • svg及canvas渲染实现。
  • 完全浏览器OFD页面渲染。
4.2 开源阅读器
  • 数科网维公司 . 数科OFD阅读器 . www.ofd.cn
  • Foxit . 福昕OFD . www.foxitsoftware.cn/ofd/

5、结语

OFD Reader & Writer 开源库作为一项致力于 OFD 文件处理的技术工具,通过其完整的 OFD 标准支持、高度模块化和开放扩展性等特点,为开发者提供了一种强大的 OFD 文件处理解决方案。如果你正在寻找一个全面的 OFD 文件读写库,OFD Reader & Writer 无疑是值得深入研究和应用的技术利器,为你的项目带来更高效的文件处理能力。

这篇关于JAVA:OFD Reader Writer 开源库技术解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/634281

相关文章

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

java中long的一些常见用法

《java中long的一些常见用法》在Java中,long是一种基本数据类型,用于表示长整型数值,接下来通过本文给大家介绍java中long的一些常见用法,感兴趣的朋友一起看看吧... 在Java中,long是一种基本数据类型,用于表示长整型数值。它的取值范围比int更大,从-922337203685477

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程

《SpringBoot集成LiteFlow实现轻量级工作流引擎的详细过程》LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑,下面给大... 目录一、基础概念1.1 组件(Component)1.2 规则(Rule)1.3 上下文(Conte

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过