版式阅读OFD SDK API 文档
扫描加入QQ群
概述
OFD SDK 是一套用于处理 OFD(Open Format Document)文档的软件开发工具包,提供了完整的文档操作、页面管理、渲染、签章等功能。
版本说明:当前文档基于 OFD SDK v1.0 版本编写。
快速开始
#include "ofdsdk.h"
// 初始化SDK
OFD_SDKInit();
// 打开OFD文件
OFDSDKHandle handle = OFD_OpenFile("example.ofd");
// 获取页数
int count = OFD_GetPageCount(handle, 0);
printf("页数: %d\n", count);
// 关闭文件
OFD_CloseFile(handle);
// 释放SDK
OFD_SDKDestory();
类型定义
OFDSDKHandle
OFD SDK 句柄类型,用于标识一个打开的 OFD 文档实例。
typedef void* OFDSDKHandle;
初始化与释放
OFD_SDKInit
OFD_EXTERN bool OFD_SDKInit();
初始化 OFD SDK,在使用任何其他 API 之前必须调用此函数。
返回值
| 类型 | 说明 |
|---|---|
| bool | 初始化成功返回 true,失败返回 false |
示例
if (OFD_SDKInit()) {
printf("SDK初始化成功\n");
} else {
printf("SDK初始化失败\n");
}
OFD_SDKDestory
OFD_EXTERN bool OFD_SDKDestory();
释放 OFD SDK 资源,在程序退出前调用。
返回值
| 类型 | 说明 |
|---|---|
| bool | 释放成功返回 true,失败返回 false |
示例
OFD_SDKDestory();
文件操作
OFD_OpenFile
OFD_EXTERN OFDSDKHandle OFD_OpenFile(const char* filePath);
打开指定路径的 OFD 文件。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| filePath | const char* | OFD 文件的完整路径 |
返回值
| 类型 | 说明 |
|---|---|
| OFDSDKHandle | 文档句柄,失败返回 NULL |
示例
OFDSDKHandle handle = OFD_OpenFile("test.ofd");
if (handle) {
printf("文件打开成功\n");
}
OFD_CloseFile
OFD_EXTERN void OFD_CloseFile(OFDSDKHandle handle);
关闭已打开的 OFD 文件,释放相关资源。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
返回值
| 类型 | 说明 |
|---|---|
| void | 无返回值 |
示例
OFD_CloseFile(handle);
OFD_IsOpened
OFD_EXTERN int OFD_IsOpened(OFDSDKHandle handle);
检查文件是否已打开。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
返回值
| 类型 | 说明 |
|---|---|
| int | 已打开返回 1,未打开返回 0 |
示例
if (OFD_IsOpened(handle)) {
printf("文件已打开\n");
}
文档操作
OFD_GetDocCount
OFD_EXTERN int OFD_GetDocCount(OFDSDKHandle handle);
获取文档数量。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
返回值
| 类型 | 说明 |
|---|---|
| int | 文档数量 |
示例
int docCount = OFD_GetDocCount(handle);
printf("文档数量: %d\n", docCount);
OFD_Save
OFD_EXTERN void OFD_Save(OFDSDKHandle handle);
保存对文档的修改。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
返回值
| 类型 | 说明 |
|---|---|
| void | 无返回值 |
示例
OFD_Save(handle);
OFD_SaveAs
OFD_EXTERN void OFD_SaveAs(OFDSDKHandle handle, const char* filePath);
将文档另存为指定路径。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
| filePath | const char* | 目标文件路径 |
返回值
| 类型 | 说明 |
|---|---|
| void | 无返回值 |
示例
OFD_SaveAs(handle, "output.ofd");
OFD_HasSignature
OFD_EXTERN int OFD_HasSignature(OFDSDKHandle handle);
检查文档是否包含数字签名。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
返回值
| 类型 | 说明 |
|---|---|
| int | 有签名返回 1,无签名返回 0 |
示例
if (OFD_HasSignature(handle)) {
printf("文档包含数字签名\n");
}
页面操作
OFD_GetPageCount
OFD_EXTERN int OFD_GetPageCount(OFDSDKHandle handle, int docIndex);
获取指定文档的页数。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
| docIndex | int | 文档索引(从0开始) |
返回值
| 类型 | 说明 |
|---|---|
| int | 页面数量 |
示例
int pageCount = OFD_GetPageCount(handle, 0);
printf("页数: %d\n", pageCount);
OFD_GetPageSize
OFD_EXTERN BOOL OFD_GetPageSize(OFDSDKHandle handle, int docIndex, int pageIndex, SIZE* size);
获取指定页面的尺寸。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
| docIndex | int | 文档索引 |
| pageIndex | int | 页面索引(从0开始) |
| size | SIZE* | 输出参数,接收页面尺寸 |
返回值
| 类型 | 说明 |
|---|---|
| BOOL | 成功返回 TRUE,失败返回 FALSE |
示例
SIZE pageSize;
if (OFD_GetPageSize(handle, 0, 0, &pageSize)) {
printf("页面宽度: %d, 高度: %d\n",
pageSize.cx, pageSize.cy);
}
OFD_GetCurPageNo
OFD_EXTERN int OFD_GetCurPageNo(OFDSDKHandle handle, int docIndex);
获取当前页码。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
| docIndex | int | 文档索引 |
返回值
| 类型 | 说明 |
|---|---|
| int | 当前页码(从1开始) |
示例
int curPage = OFD_GetCurPageNo(handle, 0);
printf("当前页码: %d\n", curPage);
渲染操作
OFD_RenderPage
OFD_EXTERN HBITMAP OFD_RenderPage(OFDSDKHandle handle, int docIndex, int pageIndex, int width, int height);
渲染指定页面为 HBITMAP。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
| docIndex | int | 文档索引 |
| pageIndex | int | 页面索引 |
| width | int | 输出宽度(像素) |
| height | int | 输出高度(像素) |
返回值
| 类型 | 说明 |
|---|---|
| HBITMAP | 渲染后的位图句柄,失败返回 NULL |
示例
HBITMAP hBitmap = OFD_RenderPage(handle, 0, 0, 800, 1000);
if (hBitmap) {
// 使用位图...
DeleteObject(hBitmap);
}
OFD_SetRenderWatermarkEnabled
OFD_EXTERN void OFD_SetRenderWatermarkEnabled(BOOL enabled);
设置是否在渲染时显示水印。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enabled | BOOL | TRUE 启用水印,FALSE 禁用 |
返回值
| 类型 | 说明 |
|---|---|
| void | 无返回值 |
示例
// 禁用水印渲染
OFD_SetRenderWatermarkEnabled(FALSE);
OFD_IsRenderWatermarkEnabled
OFD_EXTERN BOOL OFD_IsRenderWatermarkEnabled();
检查水印渲染是否启用。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| 无 | - | - |
返回值
| 类型 | 说明 |
|---|---|
| BOOL | 启用返回 TRUE,禁用返回 FALSE |
示例
if (OFD_IsRenderWatermarkEnabled()) {
printf("水印渲染已启用\n");
}
坐标转换
OFD_DeviceToPage
OFD_EXTERN BOOL OFD_DeviceToPage(OFDSDKHandle handle, int docIndex, int pageIndex, int start_x, int start_y, int size_x, int size_y, int rotate, int device_x, int device_y, POINT* pagePoint);
将设备坐标转换为页面坐标。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
| docIndex | int | 文档索引 |
| pageIndex | int | 页面索引 |
| start_x | int | 渲染起始X坐标 |
| start_y | int | 渲染起始Y坐标 |
| size_x | int | 渲染宽度 |
| size_y | int | 渲染高度 |
| rotate | int | 旋转角度 |
| device_x | int | 设备X坐标 |
| device_y | int | 设备Y坐标 |
| pagePoint | POINT* | 输出参数,接收页面坐标 |
返回值
| 类型 | 说明 |
|---|---|
| BOOL | 成功返回 TRUE,失败返回 FALSE |
示例
POINT pagePoint;
BOOL success = OFD_DeviceToPage(
handle, 0, 0, 0, 0, 800, 1000, 0,
100, 200, &pagePoint);
if (success) {
printf("页面坐标: (%d, %d)\n",
pagePoint.x, pagePoint.y);
}
OFD_PageToDevice
OFD_EXTERN BOOL OFD_PageToDevice(OFDSDKHandle handle, int docIndex, int pageIndex, int start_x, int start_y, int size_x, int size_y, int rotate, double page_x, double page_y, POINT* devicePoint);
将页面坐标转换为设备坐标。
参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handle | OFDSDKHandle | 文档句柄 |
| docIndex | int | 文档索引 |
| pageIndex | int | 页面索引 |
| start_x | int | 渲染起始X坐标 |
| start_y | int | 渲染起始Y坐标 |
| size_x | int | 渲染宽度 |
| size_y | int | 渲染高度 |
| rotate | int | 旋转角度 |
| page_x | double | 页面X坐标 |
| page_y | double | 页面Y坐标 |
| devicePoint | POINT* | 输出参数,接收设备坐标 |
返回值
| 类型 | 说明 |
|---|---|
| BOOL | 成功返回 TRUE,失败返回 FALSE |
示例
POINT devicePoint;
BOOL success = OFD_PageToDevice(
handle, 0, 0, 0, 0, 800, 1000, 0,
100.0, 200.0, &devicePoint);
if (success) {
printf("设备坐标: (%d, %d)\n",
devicePoint.x, devicePoint.y);
}