Skip to content

通过配置文件自定义 UI

福昕 PDF SDK iOS 版支持通过 JSON 配置文件自定义 UI Extensions 的功能模块和 UI 设置。配置文件可以在初始化 UIExtensionsManager 时传入,SDK 会根据配置启用或禁用相应功能模块。

加载配置文件

objc
NSString *configPath = [[NSBundle mainBundle] pathForResource:@"uiextensions_config"
                                                       ofType:@"json"];
NSData *configData = [NSData dataWithContentsOfFile:configPath];
UIExtensionsManager *extensionsMgr = [[UIExtensionsManager alloc]
    initWithPDFViewControl:pdfViewCtrl
             configuration:configData];

配置项说明

UIExtensionsConfig 提供了以下主要模块开关:

配置项说明默认值
loadThumbnail启用页面缩略图模块(支持删除/添加/旋转页面)YES
loadReadingBookmark启用阅读书签模块YES
loadOutline启用 PDF 大纲(Outline)模块YES
loadAttachment启用附件模块YES
loadForm启用表单模块YES
loadSignature启用签名模块YES
loadSearch启用文本搜索模块YES
loadPageNavigation启用页面导航模块YES
loadEncryption启用密码加密模块YES
runJavaScript启用 JavaScript 支持YES
copyText允许复制文本YES
disableLink禁用超链接跳转NO

JSON 配置文件格式

配置文件为标准 JSON 格式,以下为结构示例:

json
{
    "modules": {
        "thumbnail": true,
        "readingBookmark": true,
        "outline": true,
        "attachment": true,
        "signature": true,
        "search": true,
        "pageNavigation": true,
        "form": true,
        "encryption": true,
        "javascript": true
    },
    "permissions": {
        "copyText": true,
        "disableLink": false
    },
    "uiSettings": {
        "pageMode": "Single",
        "continuous": true,
        "colorMode": "Normal",
        "zoomMode": "FitWidth",
        "fullscreen": false,
        "highlightForm": true,
        "highlightLink": true
    }
}

通过代码配置

除 JSON 文件外,也可以通过 UIExtensionsConfig 对象直接配置:

objc
UIExtensionsConfig *config = [[UIExtensionsConfig alloc] initWithJSONData:nil];
config.loadThumbnail = YES;
config.loadOutline = YES;
config.loadForm = YES;
config.loadSignature = YES;
config.loadSearch = YES;
config.copyText = YES;

UIExtensionsManager *extensionsMgr = [[UIExtensionsManager alloc]
    initWithPDFViewControl:pdfViewCtrl
       configurationObject:config];

API 参考

UIExtensionsConfigUIExtensionsManager 的完整接口说明请参阅 API 手册