04
2024
11
14:54:51

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

1、简述

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

开源地址:ofdrw: OFD Reader & Writer 开源的OFD处理库,支持文档生成、数字签名、文档保护、文档合并、转换等功能,文档格式遵循《GB/T 33190-2016 电子文件存储与交换格式版式文档》。 - 木兰确实

1)OFD 文件读取

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

2)OFD 文件写入

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

3)高度模块化

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

4)开放扩展性

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

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、其他解决方案

HTML5_100" style="box-sizing: border-box; outline: none; margin: 24px 0px 8px; padding: 0px; cursor: pointer; color: rgb(78, 161, 219); font-synthesis-style: auto; overflow-wrap: break-word;">4.1 HTML5

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

  • jszip解压。

  • fast-xml-parser解析xml为json数据。

  • svg及canvas渲染实现。

  • 完全浏览器OFD页面渲染。

4.2 开源阅读器

5、结语

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




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8308.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: