Common Extensibility Platform (CEP)

The User interface and front end for Adobe Creative Cloud Extensions and plug-ins.

CEP Structure

What is CEP?

Adobe’s Common Extensibility Platform, or CEP, is a suite of technologies embedded in Adobe’s Creative Cloud (CC) desktop applications. CEP was originally known as CSXS—it first appeared as part of Adobe Creative Suite 4 in 2008.
CEP delivers a runtime environment that is integrated with the ExtendScript scripting support of the host application. CEP is implemented in Creative Cloud applications, including InDesign, Photoshop, Illustrator, Premiere Pro, and Dreamweaver.
You can think of CEP as a web browser that’s built into InDesign and other CC applications—but it’s a web browser with a connection to InDesign’s scripting document object model (DOM). In specific, CEP is built around a custom implementation of Google’s Chromium Embedded Framework (or CEF). CEF gives developers a way to include a version of Google’s Chrome browser in an application, including support for Google’s V8 JavaScript engine. In CEP, Adobe has created a custom version of CEF that runs inside Adobe’s desktop applications, such as InDesign. CEP connects to CC applications via interprocess communication with PlugPlug, an Adobe shared technology component. Through PlugPlug, CEP enables communication between the V8 JavaScript environment and the ExtendScript DOM in the host application.

CEP and ExtendScript

CC extensions built on the CEP foundation typically include two main parts: a user interface built in HTML and JavaScript, and one or more ExtendScript files that manage the work of manipulating the InDesign DOM. The HTML/JavaScript side of an extension can connect to the web, just as if it were a normal, non-embedded browser, but it’s not required that your CC extension do so. In fact, most of the work done in a CC extension for InDesign will probably take place on the ExtendScript side—creating documents, adding text, placing graphics files, and so on.

CEP and CEF

CEP also extends CEF by adding node.js, a popular open-source framework based on V8 JavaScript. Node.js provides APIs for file system access, web interaction (such as file upload/download), cryptography, events, and other functions. In addition, node.js is extensible, and thousands of Node Packaged Modules (NPM) provide features such as authentication, database connectivity, and zip packaging. For more on node.js, see ; for more on NPM, see . In InDesign, support for scripting is built into plug-ins developed in C++ using APIs provided by the InDesign SDK. All plug-ins, whether developed by Adobe or by third parties, can add objects, methods, and properties to the InDesign DOM. The InDesign DOM is dynamic: if you add a plug-in, the scripting model implemented in that plug-in appears in the DOM; remove the plug-in, and the supported scripting features are no longer available.

IPC Toolkit

Finally, CEP integrates the Adobe IPC Toolkit, an interprocess communications system for Adobe CC applications. Like CEP, the Adobe IPC Toolkit is enabled by PlugPlug. With the IPC Toolkit, you can, for example, control Photoshop or Illustrator from an InDesign extension.

It should be noted that CEP and ExtendScript are two distinct technologies that cannot be combined in the same source file. CEP and ExtendScript operate in distinct environments, with distinct APIs and use cases. ExtendScript is typically used for back-end automation and batch processing that runs in the context of a specific Adobe application, whereas CEP is typically used to create custom UI elements and front-end functionality that runs in a browser-like environment. However, ExtendScript can be called from a CEP extension using the evalScript method provided by the CEP extension APIs. This method allows you to run ExtendScript code within the Adobe application in which the CEP extension is running. The evalScript method takes two arguments: the script to run and a callback function to be called when the script has finished executing. A typical CEP extension directory structure would include the following main folders:

  • CSXS: The manifest file (manifest.xml) and other files that define the extension and specify how it should be installed and registered with the Adobe application are located in this folder.
  • js: This folder contains JavaScript files that implement the extension's functionality.
  • html: This folder contains HTML files that define the extension's user interface.
  • css: This folder contains CSS files that define the extension's layout and style.
  • assets: This folder contains any additional files required by the extension, such as images, fonts, or localization files.

The manifest.xml file contains information about the extension, such as its name, version, and the location of the extension's HTML, JavaScript, and other files. It also specifies the icon's location, the host application, and the permissions that are required. The manifest.xml file also lists the applications that are compatible with the extension. Each entry in the HostList> element includes the application's name, the minimum and maximum versions supported by the extension, and the application's signature.

It is important to note that the <HostList> element is optional; if not provided, the extension will be compatible with all versions of the host application supported by the CEP version of the extension.

Ready for next steps?

Do you want to discuss a Creative Cloud project with us? Fill out our form and one of our experts will contact you to get the process started....

Contact Us