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.