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
| Class | Description |
|---|---|
FSLayerTree | Layer tree for the document |
FSLayerNode | Layer 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.