在使用OFDRW前,请务必悉知 《OFD Reader & Writer免责声明》!
如果clone和预览存在困难,请移步 https://gitee.com/ofdrw/ofdrw
Talk is cheap,Show me the code. ——Linus Torvalds
像写HTML和Word那样简单的编写OFD。
根据《GB/T 33190-2016 电子文件存储与交换格式版式文档》标准实现版式文档OFD库(含有书签)。
项目结构:
- 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文档转换PDF、图片、SVG、HTML。
- ofdrw-tool OFD文档工具,文档合并、裁剪、重组。 New
- ofdrw-full 上述所有模块整合包,用于简化依赖引入。
引入依赖
<dependency>
<groupId>org.ofdrw</groupId>
<artifactId>ofdrw-full</artifactId>
<version>1.17.18</version>
</dependency>
如何生成一份OFD文档?
如何把大象放入冰箱。
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());
}
}
效果如下:
相关文档目录:
- OFD R&W 布局设计
- OFD R&W Canvas
- OFD R&W 签名签章快速入门
- OFD R&W 加密 完整性保护协议
- OFD R&W OFD转换PDF
- OFD R&W OFD转换图片
- OFD R&W OFD转换SVG
- OFD R&W OFD转换HTML
- OFD R&W 字形数据解析
- OFD R&W 文档合并
OFD阅读器客户端: 数科阅读器 . http://www.suwell.cn/
DLTech21/ofd.js
推荐开源的OFD在线预览解决方案: DLTech21/ofd.js . https://github.com/DLTech21/ofd.js
- 将OFD渲染为SVG实现矢量的无失真的OFD预览体验。
- 完全基于浏览器在前端完成所有渲染工作,不需要服务端支持和插件。
推荐开源客户端预览解决方案: roy19831015/OfdiumEx . https://github.com/roy19831015/OfdiumEx
- 基于cairo库渲染OFD。
- Windows客户端
OFD Reader and Writer 安卓平台解决方案: DLTech21/ofdrw-aar . https://github.com/DLTech21/ofdrw-aar
目前已经被合并到
ofdrw-converter
模块
推荐开源OFD图片转换解决方案: QAQtutu/ofdbox . https://github.com/QAQtutu/ofdbox
- 支持OFD解析。
- 基于java.awt解析OFD实现图片绘制。
支持 JDK 1.8 及以上版本构建。
在项目根目录下运行:
mvn install
就可以完成项目的构建打包,安装到本地Maven仓库中。
Share and Communicate
为了方便大家的交流提供QQ群
- 01群号: 577682453 (满)
- 02群号: 745517934 (满)
- 03群号: 717320255
如果各位对 OFD R&W 有 问题 或是 建议 可以提交issue和PullRequest,欢迎进群交流。
参与贡献代码尽量遵守下面代码规约:
- 原则上禁止
public
方法、类、接口进行删除:为了保留向下兼容性,如果是更新升级请标注过去已经暴露方法、接口、类为过时标记@Deprecated
,并注释置新的实现位置@deprecated {@link SomethingNew}
。 - 请为每个
public
方法、类、接口添加注释:为了保留开发者的便利性,注释一般为多行注释,注释内容需要包含参数以及方法或类的作用、参数意义、返还值以及意义、异常抛出、以及参数意义。
- 贡献指南。
项目获得 Star曲线