版式阅读OFD SDK API 文档
QQ群 SDK开发者QQ群
QQ群二维码

扫描加入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 文件。

参数

参数名类型说明
filePathconst char*OFD 文件的完整路径

返回值

类型说明
OFDSDKHandle文档句柄,失败返回 NULL

示例

OFDSDKHandle handle = OFD_OpenFile("test.ofd");
if (handle) {
    printf("文件打开成功\n");
}
OFD_CloseFile
OFD_EXTERN void OFD_CloseFile(OFDSDKHandle handle);
关闭已打开的 OFD 文件,释放相关资源。

参数

参数名类型说明
handleOFDSDKHandle文档句柄

返回值

类型说明
void无返回值

示例

OFD_CloseFile(handle);
OFD_IsOpened
OFD_EXTERN int OFD_IsOpened(OFDSDKHandle handle);
检查文件是否已打开。

参数

参数名类型说明
handleOFDSDKHandle文档句柄

返回值

类型说明
int已打开返回 1,未打开返回 0

示例

if (OFD_IsOpened(handle)) {
    printf("文件已打开\n");
}

文档操作

OFD_GetDocCount
OFD_EXTERN int OFD_GetDocCount(OFDSDKHandle handle);
获取文档数量。

参数

参数名类型说明
handleOFDSDKHandle文档句柄

返回值

类型说明
int文档数量

示例

int docCount = OFD_GetDocCount(handle);
printf("文档数量: %d\n", docCount);
OFD_Save
OFD_EXTERN void OFD_Save(OFDSDKHandle handle);
保存对文档的修改。

参数

参数名类型说明
handleOFDSDKHandle文档句柄

返回值

类型说明
void无返回值

示例

OFD_Save(handle);
OFD_SaveAs
OFD_EXTERN void OFD_SaveAs(OFDSDKHandle handle, const char* filePath);
将文档另存为指定路径。

参数

参数名类型说明
handleOFDSDKHandle文档句柄
filePathconst char*目标文件路径

返回值

类型说明
void无返回值

示例

OFD_SaveAs(handle, "output.ofd");
OFD_HasSignature
OFD_EXTERN int OFD_HasSignature(OFDSDKHandle handle);
检查文档是否包含数字签名。

参数

参数名类型说明
handleOFDSDKHandle文档句柄

返回值

类型说明
int有签名返回 1,无签名返回 0

示例

if (OFD_HasSignature(handle)) {
    printf("文档包含数字签名\n");
}

页面操作

OFD_GetPageCount
OFD_EXTERN int OFD_GetPageCount(OFDSDKHandle handle, int docIndex);
获取指定文档的页数。

参数

参数名类型说明
handleOFDSDKHandle文档句柄
docIndexint文档索引(从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);
获取指定页面的尺寸。

参数

参数名类型说明
handleOFDSDKHandle文档句柄
docIndexint文档索引
pageIndexint页面索引(从0开始)
sizeSIZE*输出参数,接收页面尺寸

返回值

类型说明
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);
获取当前页码。

参数

参数名类型说明
handleOFDSDKHandle文档句柄
docIndexint文档索引

返回值

类型说明
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。

参数

参数名类型说明
handleOFDSDKHandle文档句柄
docIndexint文档索引
pageIndexint页面索引
widthint输出宽度(像素)
heightint输出高度(像素)

返回值

类型说明
HBITMAP渲染后的位图句柄,失败返回 NULL

示例

HBITMAP hBitmap = OFD_RenderPage(handle, 0, 0, 800, 1000);
if (hBitmap) {
    // 使用位图...
    DeleteObject(hBitmap);
}
OFD_SetRenderWatermarkEnabled
OFD_EXTERN void OFD_SetRenderWatermarkEnabled(BOOL enabled);
设置是否在渲染时显示水印。

参数

参数名类型说明
enabledBOOLTRUE 启用水印,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);
将设备坐标转换为页面坐标。

参数

参数名类型说明
handleOFDSDKHandle文档句柄
docIndexint文档索引
pageIndexint页面索引
start_xint渲染起始X坐标
start_yint渲染起始Y坐标
size_xint渲染宽度
size_yint渲染高度
rotateint旋转角度
device_xint设备X坐标
device_yint设备Y坐标
pagePointPOINT*输出参数,接收页面坐标

返回值

类型说明
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);
将页面坐标转换为设备坐标。

参数

参数名类型说明
handleOFDSDKHandle文档句柄
docIndexint文档索引
pageIndexint页面索引
start_xint渲染起始X坐标
start_yint渲染起始Y坐标
size_xint渲染宽度
size_yint渲染高度
rotateint旋转角度
page_xdouble页面X坐标
page_ydouble页面Y坐标
devicePointPOINT*输出参数,接收设备坐标

返回值

类型说明
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);
}