Skip to content
zc310Public

About

Golang toolkit for OFD: convert (OFD⇄PDF/PNG/JPG/SVG/HTML/Markdown, PDF/MD/Office/HTML→OFD), create, validate, analyze, render, and preview in browser/desktop/android.

Topics

Resources

Stars

12 stars

Watchers

3 watching

Forks

Repository files navigation

OFD Go Toolkit 图标

OFD Go Toolkit

GoDoc GitHub Release Go Build & Test Coverage Status GitHub Stars

用 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.pdf

ofd-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 API

在已有 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 PDF 转 OFD、资源预算与诊断
Office Office 转 OFD/PDF
HTML/MHTML 浏览器打印与格式转换

工具的参数与退出码见功能表中的文档。标准资料、截图与维护入口汇总在 文档目录;已发布接口的破坏性变更见 CHANGELOG。 性能对比见 ofd-benchmark,实际表现取决于 文档样本、字体、操作系统和运行环境。

OFD 简介

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 联系维护者。

About

Golang toolkit for OFD: convert (OFD⇄PDF/PNG/JPG/SVG/HTML/Markdown, PDF/MD/Office/HTML→OFD), create, validate, analyze, render, and preview in browser/desktop/android.

Topics

Resources

Stars

12 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages