# OFD SDK **Repository Path**: dashen888/ofd-sdk ## Basic Information - **Project Name**: OFD SDK - **Description**: 专业级版式阅读 OFD SDK 组件,支持C++、C#、JAVA等语言接入。专业级版式阅读 OFD SDK 组件。本仓库提供 OFD SDK 的 C++ 动态链接库(DLL/SO/dylib)及调用演示程序(Demo)。 OFD SDK 是企业级OFD文档处理开发工具包,支持文档打开、渲染、签章、验签、水印、注释等全功能,格式遵循 《GB/T 33190-2016 电子文件存储与交换格式版式文档. - **Primary Language**: C++ - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: https://www.zhezhou.cn/developservice/ofd - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-12 - **Last Updated**: 2026-05-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: OFD, ofd版式, 版式阅读, PDF阅读, pdf ## README **专业级版式阅读 OFD SDK 组件。本仓库提供 OFD SDK 的 C++ 动态链接库(DLL/SO/dylib)及调用演示程序(Demo)。** OFD SDK 是企业级OFD文档处理开发工具包,支持文档打开、渲染、签章、验签、水印、注释等全功能,格式遵循 《GB/T 33190-2016 电子文件存储与交换格式版式文档》​ 国家标准。 助力您快速构建专业、安全的OFD文档处理应用程序。 ![输入图片说明](QQ20260513-102204.gif) **官方资源** **产品官网与API文档:版式阅读OFD SDK 详细API文档:OFD SDK API 文档 开发者交流QQ群:460303575 (扫码加入,获取即时支持)** **✨ 核心特性** 全功能覆盖:提供从OFD文档解析、页面渲染、坐标转换到数字签章、水印处理的全套接口。 跨平台支持:提供 Windows (x86/x64)、macOS、Linux 等多个平台的 SDK 包。 多语言支持:核心库基于C++,同时提供 C#、Java 等多语言绑定(详见官网)。 高性能渲染:高质量页面渲染,支持多种分辨率输出,完美保持文档原貌。 安全可靠:支持数字签名与验证,确保文档的完整性和不可篡改性。 **📦 软件架构** 本项目是 OFD SDK 的 C++ 实现部分,包含: bin/: 各平台的动态库文件(如 OFDSDK.dll)。 include/: C++ 头文件(ofdsdk.h)。 demo/: 使用 C++ 调用 SDK 的示例程序源码,演示核心接口的使用方法。 docs/: 额外的说明文档(可选)。 SDK采用分层设计,底层为文档格式解析引擎,中间层为功能逻辑封装,最上层提供简洁清晰的API接口。 **🚀 安装教程** 下载 SDK 根据您的开发环境,从 SDK下载页选择对应的版本(Windows、Mac 或 Linux)并下载。 引入头文件与库 将 include/ofdsdk.h头文件添加到您的项目包含路径中。 将对应平台的动态库文件(如 OFDSDK.dll)放置在您的可执行文件目录,或系统的库搜索路径下。 在项目设置中链接相应的导入库(Windows 下为 .lib文件)。 📖 使用说明 以下是一个简单的C++示例,展示如何初始化和打开一个OFD文档: ``` #include “ofdsdk.h” #include int main() { // 1. 初始化SDK (必须在调用其他任何函数前执行) if (!OFD_SDKInit()) { std::cerr << “SDK初始化失败!” << std::endl; return -1; } // 2. 打开OFD文件 OFDSDKHandle handle = OFD_OpenFile(“example.ofd”); if (!handle) { std::cerr << “打开文件失败!” << std::endl; OFD_SDKDestory(); return -1; } std::cout << “文件打开成功。” << std::endl; // 3. 获取文档信息示例 int pageCount = OFD_GetPageCount(handle, 0); // 获取第一个文档的页数 std::cout << “文档总页数:” << pageCount << std::endl; // 4. 检查是否有签名 if (OFD_HasSignature(handle)) { std::cout << “此文档包含数字签名。” << std::endl; } // 5. 清理资源 OFD_CloseFile(handle); OFD_SDKDestory(); std::cout << “程序执行完毕。” << std::endl; return 0; } ``` **🔧 核心接口** SDK 提供了以下核心 C 接口(在 ofdsdk.h中定义): **句柄与生命周期管理** ``` typedef void* OFDSDKHandle; OFD_EXTERN bool OFD_SDKInit(); OFD_EXTERN bool OFD_SDKDestory(); ``` **文件操作** ``` OFD_EXTERN OFDSDKHandle OFD_OpenFile(const char* filePath); OFD_EXTERN void OFD_CloseFile(OFDSDKHandle handle); OFD_EXTERN int OFD_IsOpened(OFDSDKHandle handle); ``` **文档操作** ``` OFD_EXTERN int OFD_GetDocCount(OFDSDKHandle handle); OFD_EXTERN void OFD_Save(OFDSDKHandle handle); OFD_EXTERN void OFD_SaveAs(OFDSDKHandle handle, const char* filePath); OFD_EXTERN int OFD_HasSignature(OFDSDKHandle handle); ``` **页面操作** ``` OFD_EXTERN int OFD_GetPageCount(OFDSDKHandle handle, int docIndex); OFD_EXTERN BOOL OFD_GetPageSize(OFDSDKHandle handle, int docIndex, int pageIndex, SIZE* size); OFD_EXTERN int OFD_GetCurPageNo(OFDSDKHandle handle, int docIndex); ``` **渲染操作** ``` OFD_EXTERN HBITMAP OFD_RenderPage(OFDSDKHandle handle, int docIndex, int pageIndex, int width, int height); OFD_EXTERN void OFD_SetRenderWatermarkEnabled(BOOL enabled); ``` **坐标转换** ``` OFD_EXTERN BOOL OFD_DeviceToPage(..., POINT* pagePoint); OFD_EXTERN BOOL OFD_PageToDevice(..., POINT* devicePoint); ``` 完整、详细的函数说明、参数定义和示例,请务必查阅 官方API文档。 **🤝 参与贡献** 我们欢迎社区的力量!如果您有好的想法或发现了问题,可以按以下流程参与贡献: Fork 本仓库​ 到您自己的Gitee账户下。 新建分支​ (git checkout -b feat/AmazingFeature) 用于开发新功能或修复。 提交更改​ (git commit -m ‘Add some AmazingFeature’)。 推送到分支​ (git push origin feat/AmazingFeature)。 新建 Pull Request,我们会尽快审核您的代码。 请注意:对核心 SDK 二进制文件的修改需与官方协调。本仓库主要接受 Demo 示例、文档改进和问题反馈方面的贡献。 **☎️ 支持与联系** 技术交流QQ群:460303575(欢迎加入,与开发者直接交流) 官方网站与文档:https://www.zhezhou.cn/developservice/ofd SDK问题:请优先在QQ群或通过官网渠道反馈。 本仓库问题:关于此代码仓库(如Demo示例)的问题,可在本仓库的 Issues页面提交。