Configuration Overview
ComPDFKit_Tools provides a complete JSON-driven configuration system through CPDFConfiguration, allowing you to control UI behavior, feature toggles, and default styles without modifying source code.
CPDFConfiguration Structure
CPDFConfiguration is the top-level configuration class containing 8 sub-configurations:
public class CPDFConfiguration implements Serializable {
public ModeConfig modeConfig; // Mode configuration
public ToolbarConfig toolbarConfig; // Toolbar configuration
public AnnotationsConfig annotationsConfig;// Annotation configuration
public ContentEditorConfig contentEditorConfig; // Content editor configuration
public FormsConfig formsConfig; // Forms configuration
public ReaderViewConfig readerViewConfig; // Reader view configuration
public GlobalConfig globalConfig; // Global configuration
public ContextMenuConfig contextMenuConfig;// Context menu configuration
}Sub-configuration details:
| Sub-config | Description | Documentation |
|---|---|---|
ModeConfig | Initial mode, available modes list, UI visibility mode | Mode Config |
ToolbarConfig | Toolbar visibility, menu items, custom buttons | Top Toolbar |
AnnotationsConfig | Available annotation types, tools, default properties | Annotation Toolbar |
ContentEditorConfig | Available editor types, tools, default properties | Content Editor |
FormsConfig | Available form types, tools, default properties | Form Toolbar |
ReaderViewConfig | Display mode, theme, spacing, zoom, etc. | Reader View Config |
GlobalConfig | Theme mode, save behavior, BOTA, search, watermark, etc. | Global Config |
ContextMenuConfig | Context menu customization for various objects | Context Menu |
Default Configuration File
The SDK includes a built-in tools_default_configuration.json configuration file located in the Tools module's assets directory. This file contains default values for all configuration items.
Full content available at: tools_default_configuration.json
Loading Configuration
Use CPDFConfigurationUtils.normalConfig() to load configuration from a JSON file:
// Load default configuration from assets
CPDFConfiguration configuration = CPDFConfigurationUtils.normalConfig(
context, "tools_default_configuration.json");val configuration = CPDFConfigurationUtils.normalConfig(
context, "tools_default_configuration.json")Customizing Configuration
Method 1: Modify the JSON File
Copy tools_default_configuration.json to your project's assets directory and modify the JSON content directly:
{
"modeConfig": {
"initialViewMode": "viewer",
"availableViewModes": ["viewer", "annotations"]
},
"toolbarConfig": {
"mainToolbarVisible": true
}
}Method 2: Modify the Configuration Object in Code
After loading the configuration, modify specific fields in code:
CPDFConfiguration configuration = CPDFConfigurationUtils.normalConfig(
context, "tools_default_configuration.json");
// Set initial mode to annotation mode
configuration.modeConfig.initialViewMode = CPreviewMode.Annotation;
// Hide form toolbar
configuration.toolbarConfig.formToolbarVisible = false;
// Set highlight annotation default color
configuration.annotationsConfig.initAttribute.highlight.setColor("#FF0000");
configuration.annotationsConfig.initAttribute.highlight.setAlpha(128);val configuration = CPDFConfigurationUtils.normalConfig(
context, "tools_default_configuration.json")
configuration.modeConfig.initialViewMode = CPreviewMode.Annotation
configuration.toolbarConfig.formToolbarVisible = false
configuration.annotationsConfig.initAttribute.highlight.setColor("#FF0000")
configuration.annotationsConfig.initAttribute.highlight.setAlpha(128)Method 3: Build Entirely in Code
Build the configuration entirely in code without using a JSON file:
CPDFConfiguration configuration = new CPDFConfiguration();
configuration.modeConfig = ModeConfig.normal();
configuration.toolbarConfig = ToolbarConfig.normal();
configuration.annotationsConfig = AnnotationsConfig.normal();
configuration.contentEditorConfig = ContentEditorConfig.normal();
configuration.formsConfig = FormsConfig.normal();
configuration.readerViewConfig = new ReaderViewConfig();
configuration.globalConfig = new GlobalConfig();val configuration = CPDFConfiguration().apply {
modeConfig = ModeConfig.normal()
toolbarConfig = ToolbarConfig.normal()
annotationsConfig = AnnotationsConfig.normal()
contentEditorConfig = ContentEditorConfig.normal()
formsConfig = FormsConfig.normal()
readerViewConfig = ReaderViewConfig()
globalConfig = GlobalConfig()
}Each sub-configuration class provides a
normal()static method that returns an instance with default values.