开放代码社区 › OFD Reader & Writer

OFD Reader & Writer

数据与可视化Java

OFD Reader & Writer 在使用OFDRW前,请务必悉知 《OFD Reader & Writer 免责声明 / Disclaimer》 ! 若clone和文档预览存在困难,请移步 Talk is cheap,Show me the code. ——Linus Torvalds OFD Reader & Writer 开源的OFD处理库,支持文档生成、数字签名、文档保护、文档合并、转换、导出等功能。 本项目采用MIT许可,请尊重开源项目作者,在软件中附带OFDRW开源软件许可, 在遵守开源协议前提下可免费商业化使用 。

AI/机器学习Web后端前端工具Java
作者:用户6868语言:Java更新:2026-10-27
仓库地址
https://gitee.com/ofdrw/ofdrw.git

前往原仓库

README

# OFD Reader & Writer 

![-](https://img.shields.io/badge/java-%3E%3D1.8-blue) ![Maven Central](https://img.shields.io/maven-central/v/org.ofdrw/ofdrw) [![license](https://img.shields.io/badge/license-MIT-blue)](./LICENSE) 


⚠️ 在使用OFDRW前,请务必悉知 [***《OFD Reader & Writer 免责声明 / Disclaimer》***](https://gitee.com/ofdrw/ofdrw/blob/master/DISCLAIMER.md)!

> 若clone和文档预览存在困难,请移步 [https://gitee.com/ofdrw/ofdrw](https://gitee.com/ofdrw/ofdrw)

**Talk is cheap,Show me the code. ——Linus Torvalds**

<p align="center">
  <img width="275" height="275" src="https://web-code-img.oss-cn-shanghai.aliyuncs.com/readme/3e495a367ae76a39cb8bc7fc.png">
</p>

OFD Reader & Writer 开源的OFD处理库,支持文档生成、数字签名、文档保护、文档合并、转换、导出等功能。

本项目采用[MIT许可](https://gitee.com/ofdrw/ofdrw/blob/master/LICENSE),请尊重开源项目作者,在软件中附带OFDRW开源软件许可,**在遵守开源协议前提下可免费商业化使用**。

根据[《GB/T 33190-2016 电子文件存储与交换格式版式文档》](https://gitee.com/ofdrw/ofdrw/blob/master/GBT_33190-2016_电子文件存储与交换格式版式文档.pdf)标准实现版式文档OFD库(含有书签)。

项目采用Maven模块管理,各模块如下:

- [**ofdrw-core**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-core) OFD核心API,参考[《GB/T 33190-2016 电子文件存储与交换格式版式文档》](https://gitee.com/ofdrw/ofdrw/blob/master/GBT_33190-2016_电子文件存储与交换格式版式文档.pdf)实现的基础数据结构。
- [**ofdrw-font**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-font) 生成OFD字体相关。
- [**ofdrw-layout**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout) OFD布局引擎库,用于文档构建和渲染。
- [**ofdrw-pkg**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-pkg) OFD文件的容器,用于文档的打包。
- [**ofdrw-reader**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-reader) OFD文档解析器,用于OFD的反序列化以及签名签章。
- [**ofdrw-sign**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-sign) OFD文档数字签章。
- [**ofdrw-gm**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-gm) 用于支持签章模块需要的国密电子签章数据结构。
- [**ofrw-crypto**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-crypto) 用于实现《GM/T 0099-2020 开放版式文档密码应用技术规范》对OFD的密码相关功能。
- [**ofdrw-gv**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-gv) OFDRW 所有模块所共用的全局变量。
- [**ofdrw-converter**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-converter) OFD文档转换(格式迁移用,**不建议用于预览**,预览见下方 OFDRW 可视化工具链)。
- [**ofdrw-tool**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-tool) OFD文档工具,文档合并、裁剪、重组、混合。
- [**ofdrw-archive**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-archive) OFD-A 档案模块,依据 GB/T 42133-2022 实现 OFD 文件的合规检查和去技术化转换。
- [**ofdrw-graphics2d**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-graphics2d) 实现了AWT Graphics2D接口,生成OFD文档内容。
- [**ofdrw-full**](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-full) 上述所有模块整合包,用于简化依赖引入。

注:

- 您可以根据需求裁剪模块优化程序体积。
- 您可以仅引用`ofdrw-core`中定义的数据结来构建属于您自己的OFD库,就像[ofdrw-graphics2d](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-graphics2d)那样。

## OFDRW 可视化工具链 ***New***

[**ofdrw-viewer**](https://github.com/ofdrw/ofdrw-viewer) 是 OFDRW 系列项目之一,由一组可独立使用的 OFD 预览与渲染库、组件构成,为开发者补齐 OFD 处理链路的最后一环:

- [**ofdrw-viewer-ui**](https://github.com/ofdrw/ofdrw-viewer/tree/main/packages/ofdrw-viewer-ui) HTML5 OFD 阅读器组件,可嵌入业务系统实现在线预览。
- [**ofdrw-viewer-engine**](https://github.com/ofdrw/ofdrw-viewer/tree/main/packages/ofdrw-viewer-engine) 渲染引擎库,支持浏览器 / Node.js / 小程序,可绘制到 Canvas 或导出图片。
- [**ofdrw-viewer-cli**](https://github.com/ofdrw/ofdrw-viewer/tree/main/packages/ofdrw-viewer-cli) 终端图片导出工具,支持 PNG / JPEG / WebP。
- [**ofdrw-viewer-crypto**](https://github.com/ofdrw/ofdrw-viewer/tree/main/packages/ofdrw-viewer-crypto) 加密文档解密、电子印章解析与签名验证。

👉 [在线体验 https://ofdrw.github.io/ofdrw-viewer/index.html](https://ofdrw.github.io/ofdrw-viewer/index.html)

> OFDRW 负责 OFD 的生成、编辑与解析,ofdrw-viewer 负责预览与可视化,两者共同构成完整的 OFD 处理链路。**预览 OFD 无需转换**,本项目的转换模块仅用于格式迁移。

## QuickStart

Maven项目引入依赖
```xml
<dependency>
  <groupId>org.ofdrw</groupId>
  <artifactId>ofdrw-full</artifactId>
  <version>2.5.0</version>
</dependency>
```

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

> - 若您没有采用Maven管理项目,请参阅项目中`pom.xml`文件中的依赖,手动解决三方依赖包问题。
> - 若出现NoClassFound等错误,请检查相关包是否存在冲突。


如何生成一份OFD文档,如何把大象放入冰箱?


```java
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());
    }
}
```

效果如下:

![示例](https://web-code-img.oss-cn-shanghai.aliyuncs.com/readme/a90ec30876946bd3a7852b77.png)

- [文档生成API示例](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout/src/test/java/org/ofdrw/layout/OFDDocTest.java)
- [文档布局示例](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout/src/test/java/org/ofdrw/layout/LayoutTest.java)
- [Canvas示例](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout/src/test/java/org/ofdrw/layout/element/canvas/DrawContextTest.java)
- [文字抽取示例](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-reader/src/test/java/org/ofdrw/reader/ContentExtractorTest.java)
- [段落布局示例](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout/src/test/java/org/ofdrw/layout/ParagraphLayoutDemo.java)
- [文档编辑示例](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout/src/test/java/org/ofdrw/layout/DocEditDemos.java)
- [数字签名清理示例](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-sign/src/test/java/org/ofdrw/sign/SignCleanerTest.java)

📚 相关文档目录:

- [OFD R&W 布局设计](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout/doc/layout/README.md)
- [OFD R&W 扩展 自定义元素](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout/doc/customelement/README.md)
- [OFD R&W 基于Canvas文档内容生成](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-layout/doc/canvas/README.md)
- [OFD R&W 签名签章快速入门](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-sign/doc/quickstart/README.md)
- [OFD R&W 加密 完整性保护协议](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-crypto/README.md)
- [OFD R&W 转换OFD/OFD导出 ](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-converter/README.md)(**不建议用于预览**)
- [OFD R&W 字形数据解析](https://gitee.com/ofdrw/ofdrw/blob/master/ofdrw-converter/src/main/java/org/ofdrw/converter/font/README.md)
- [OFD R&W 文档合并](https://gitee.com/ofdrw/ofd