Skip to content

图层

福昕 PDF SDK iOS 版通过 Core SDK 提供了 PDF 图层(Optional Content Groups, OCG)的读取和管理能力。图层允许将页面内容按组织结构分层控制可见性,常见于 CAD 图纸、地图和多语言文档等。

核心类

说明
FSLayerTree图层树对象,管理文档中的所有图层,通过文档对象构造
FSLayerNode图层节点,表示树中的单个图层或分组,支持获取/设置名称、可见性和子节点等

示例:遍历图层树

objc
#import <FoxitRDK/FSPDFObjC.h>

FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:@"path/to/Sample.pdf"];
[doc load:nil];

FSLayerTree *layerTree = [[FSLayerTree alloc] initWithDocument:doc];
if ([layerTree isEmpty]) {
    NSLog(@"文档没有图层");
    return;
}

FSLayerNode *rootNode = [layerTree getRootNode];
[self traverseLayerNodes:rootNode level:0];

- (void)traverseLayerNodes:(FSLayerNode *)node level:(int)level {
    if (!node || [node isEmpty]) return;

    int childCount = [node getChildrenCount];
    for (int i = 0; i < childCount; i++) {
        FSLayerNode *child = [node getChild:i];
        NSString *name = [child getName];
        BOOL hasLayer = [child hasLayer];

        NSString *indent = [@"" stringByPaddingToLength:level * 2
                                             withString:@" " startingAtIndex:0];
        NSLog(@"%@图层: %@, 是否有内容: %@", indent, name, hasLayer ? @"是" : @"否");

        // 递归遍历子节点
        [self traverseLayerNodes:child level:level + 1];
    }
}

示例:控制图层可见性

objc
FSLayerNode *child = [rootNode getChild:0];

// 设置默认可见性
[child setDefaultVisible:NO];

// 设置视图用途可见性
[child setViewUsage:FSLayerTreeUsageStateOFF];

// 设置导出用途可见性
[child setExportUsage:FSLayerTreeUsageStateON];

[doc saveAs:@"path/to/output.pdf" saveFlags:FSPDFDocSaveFlagNormal];

示例:添加图层节点

objc
FSLayerNode *rootNode = [layerTree getRootNode];

// 在根节点下添加新图层
FSLayerNode *newNode = [rootNode addChild:0 name:@"新图层" has_Layer:YES];
[newNode setDefaultVisible:YES];

[doc saveAs:@"path/to/output.pdf" saveFlags:FSPDFDocSaveFlagNormal];

API 参考

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