用 Go 解析、创建、转换、渲染、校验和分析 OFD 文档。提供 Go API、命令行工具、 HTTP 服务,以及桌面、Android 和浏览器阅读器。
| 想做什么 | 入口 |
|---|---|
| 在线打开 OFD | 浏览器阅读器 |
| 下载应用或命令行工具 | GitHub Releases |
| 转换、创建和检查文档 | 快速开始、功能特性 |
| 接入自己的 Go 项目 | Go API、库使用指南 |
| 从源码运行和打包 | 构建与打包、构建指南 |
| 查询兼容性与标准资料 | 支持清单、文档目录 |
下载 Release 中对应平台的命令行程序后运行:
# OFD 转 PDF
ofd-converter input.ofd output.pdf
# 首页输出为 PNG;页码从 1 开始
ofd-converter --page 1 --dpi 150 input.ofd page1.png
# 多页图片输出为 ZIP
ofd-converter --format png input.ofd pages.zip
# PDF 转 OFD
ofd-converter input.pdf output.ofd
# 从 YAML 或 JSON 清单创建 OFD
ofd-creator -i document.yaml -o result.ofd --validate
# 校验与分析
ofd-validator --format text input.ofd
ofd-analyzer --format json input.ofd
# 多份文档与第一份比较,生成可离线查看的图文差异报告
ofd-compare -o comparison.html original.ofd revised.ofd final.ofd从源码运行时,在仓库根目录将程序名替换为 go run ./cmd/工具名,例如:
go run ./cmd/ofd-converter testdata/helloworld.ofd /tmp/helloworld.pdfofd-converter 默认使用 150 DPI 和白色背景,--page 使用多文档体合并后的全局页码。
批量转换、完整选项和退出码见 转换工具说明;
创建清单见 creator 示例,大对比报告可使用
--external-images 将图片保存到报告旁。
常规 OFD 转 PDF、图片及 PDF 导入使用 Go 实现。Office、HTML、XPS 和 OCR 的 外部工具要求见 运行依赖,PDF 的可选 OpenJPEG 后端见 PDF 支持清单。
| 场景 | 能力与工具 |
|---|---|
| 文档转换 | ofd-converter:OFD 转 PDF、DOCX、HTML、文本、Markdown、PNG/JPG、TIFF、SVG、EPS、TeX;PDF/XPS/Markdown/Office/HTML/图片转 OFD。 |
| 创建与编辑 | ofd-creator:JSON/YAML 清单创建、配置导出、水印与条目替换;支持多文档打包、模型级拼页、选页和重排。 |
| 校验与分析 | ofd-validator 检查 ZIP、XML、XSD、引用和语义;ofd-analyzer 分析结构、页面、资源、附件与签名。 |
| 文档对比 | ofd-compare:比较目录、摘要、XML、文字和画面,支持页配对、局部放大与外置图片;输出 HTML、JSON、文本和 Markdown。 |
| 档案预检 | ofd-archive:技术清单、归档准备目录、符合性矩阵与 SHA-256 固定性验证。 |
| 发票处理 | ofd-invoice:增值税电子发票、铁路电子客票抽取,JSON/CSV/XLSX 汇总、去重、自校验与 PDF 合并打印。 |
| 电子签章 | ofd-seal:SES V4 SM2/SM3 电子印章;签署与验证 API 支持签章生成、外部签署与完整验证,接受签章使用 Result.FullyValid()。creator 验签报告 展示完整状态及原因。外部协议示例见 ofd-signer-demo。 |
| 阅读器 | ofd-viewer:桌面、Android 与 Fyne Web 阅读器;ofd-wasm:浏览器阅读器、WASM API 与 Worker 协议。 |
| HTTP 服务 | ofd-server:同步流输出、异步转换任务与远程产物传输。 |
| Linux 桌面集成 | ofd-thumbnailer:文件管理器 OFD 缩略图。 |
在已有 Go 项目中添加依赖,Go 工具链要求以 go.mod 为准:
go get github.com/zc310/ofd@latest下面是一个完整的 OFD 转 PDF 示例。转换入口的首参是 context.Context,长任务可传入
带取消或超时的上下文:
package main
import (
"context"
"log"
"os"
"github.com/zc310/ofd/pkg/converter"
)
func main() {
output, err := os.Create("output.pdf")
if err != nil {
log.Fatal(err)
}
err = converter.PDF(context.Background(), "input.ofd", output)
closeErr := output.Close()
if err != nil {
log.Fatal(err)
}
if closeErr != nil {
log.Fatal(closeErr)
}
}| 需求 | Go 入口 |
|---|---|
| 转换与渲染 | pkg/converter、可运行示例 |
| 导入 PDF、Markdown 等格式 | 按需注册导入器 |
| 按页渲染、文字、搜索与导航 | pkg/webreader、接入示例 |
| 创建 OFD 与流式写出 | pkg/creator 库指南 |
| 多文档合并、拼页和重排 | pkg/merge、合并与选页说明 |
| 签署、生成印章和验证 | pkg/sign 库指南 |
| 文档对比 | pkg/compare 库指南 |
输入类型、页码、DPI、格式导入、缓存与字体等细节见 Go API 使用指南。 基于本库的独立应用示例有 ofd-viewer 与 ofd-toolbox。
桌面与 Android:ofd-viewer 提供连续阅读、缩略图、 四种页面视图、简体中文/英文界面,以及 PDF、图片和文本导出。安装包见 Releases,系统要求与截图见对应文档。
浏览器:在线阅读器在本地处理 OFD,支持文字选择、 搜索、页面导航、图层与模板显隐、附件和签名检查,以及 PNG/JPG/PDF/TXT 导出。 本地启动方式见 WASM 构建与运行;API 与 Worker 协议见 ofd-wasm。
在仓库根目录执行,发行版本由 Makefile 的 VERSION 统一注入:
# 当前平台的命令行工具
make build-tools
# 当前平台的命令行工具 ZIP 包
make package-tools
# 当前平台的桌面阅读器与命令行工具包
make package-desktop构建输出默认位于 /tmp/ofd/.build,发布包位于 /tmp/ofd/dist,可通过
BUILD_DIR、DIST_DIR 覆盖。Android、WASM、交叉编译、系统依赖与 Windows 7
兼容工具链的试编译说明见 构建指南。
支持清单区分已支持、部分支持和暂不支持,记录能力边界与兼容处理:
| 格式 | 支持范围与限制 |
|---|---|
| OFD | 解析、创建、渲染、校验与阅读 |
| PDF 转 OFD、资源预算与诊断 | |
| Office | Office 转 OFD/PDF |
| HTML/MHTML | 浏览器打印与格式转换 |
工具的参数与退出码见功能表中的文档。标准资料、截图与维护入口汇总在 文档目录;已发布接口的破坏性变更见 CHANGELOG。 性能对比见 ofd-benchmark,实际表现取决于 文档样本、字体、操作系统和运行环境。
OFD(Open Fixed-layout Document)是中国电子文件领域常用的版式文档格式,适用于 电子证照、电子发票、数字档案和公文。文件通常以 ZIP 容器组织 XML、页面、文字、 路径、图片、字体、附件和签名等资源,并保留相应的布局和绘制信息。
GB/T 33190-2016 等标准的官方查询链接见标准资料索引。 项目不随仓库分发标准全文;不同生产方的扩展与兼容处理见 OFD 支持清单。
本项目基于 Apache License 2.0 发布,声明见 LICENSE 和 NOTICE。 第三方依赖的来源与许可见 THIRD-PARTY-LICENSES,测试样例来源见 testdata/README.md,项目图标的来源与许可见图标说明。
使用本项目及其输出结果前,请阅读 免责声明。本项目不保证所有 OFD 文件的解析、转换、校验或渲染结果适用于特定业务、法律或合规场景。如发现仓库、文档 或示例中可能存在侵权内容,请通过 GitHub Issues 联系维护者。