Skip to content

Layers ​

Foxit PDF SDK for iOS manages PDF optional content groups (OCG) via Core SDK. Layers control visibility of page content—common in CAD, maps, and multilingual documents.

Core classes ​

ClassDescription
FSLayerTreeLayer tree for the document
FSLayerNodeLayer or group node: name, visibility, children

Example: traverse layer tree ​

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];
    }
}

Example: control visibility ​

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

[child setDefaultVisible:NO];
[child setViewUsage:FSLayerTreeUsageStateOFF];
[child setExportUsage:FSLayerTreeUsageStateON];

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

Example: add layer node ​

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 reference

See the API reference for FSLayerTree and FSLayerNode.