Skip to content
ComPDF
Guides

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:

java
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-configDescriptionDocumentation
ModeConfigInitial mode, available modes list, UI visibility modeMode Config
ToolbarConfigToolbar visibility, menu items, custom buttonsTop Toolbar
AnnotationsConfigAvailable annotation types, tools, default propertiesAnnotation Toolbar
ContentEditorConfigAvailable editor types, tools, default propertiesContent Editor
FormsConfigAvailable form types, tools, default propertiesForm Toolbar
ReaderViewConfigDisplay mode, theme, spacing, zoom, etc.Reader View Config
GlobalConfigTheme mode, save behavior, BOTA, search, watermark, etc.Global Config
ContextMenuConfigContext menu customization for various objectsContext 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:

java
// Load default configuration from assets
CPDFConfiguration configuration = CPDFConfigurationUtils.normalConfig(
    context, "tools_default_configuration.json");
kotlin
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:

json
{
  "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:

java
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);
kotlin
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:

java
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();
kotlin
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.