
Adobe Acrobat and PDF Custom Software Development
Modifying Adobe Acrobat and Reader to edit and modify pdf files

We can offer solutions to modify a PDF file to become an integral part of Adobe Acrobat. To do this we use the Adobe Acrobat plug-in software development kit (sdk. Alternatively, we can integrate Adobe Acrobat into a solution. We can achieve this through plugins, scripts, and calls from other applications in Windows and Mac environments. Acrobat plugins allow the addition of features to the Adobe Acrobat menus, toolbars, and even enable the provision of floating palettes and windows.
Acrobat SDK and Adobe PDF Library compatibility
A significant portion of the code utilized in plug-ins is compatible with the Adobe® PDF Library. This compatibility streamlines the integration process, ensuring that developers can leverage existing codebases and enhance functionality with minimal adjustments. Essentially, this means that when you’re working with plug-ins, you’re tapping into a robust framework supported by the Adobe® PDF Library. This synergy not only saves time but also increases efficiency by allowing for seamless transitions between different development environments.
Our experience
Mapsoft has extensive experience of producing functionality to modify pdf files with the Acrobat Software Developer Kit (SDK). We have used it in its own products as well as numerous customised developments for customers. We can even modify our own products to create a more defined solution to customers
The Acrobat SDK
The Adobe Acrobat SDK (Software Development Kit)
The Adobe Acrobat SDK is a collection of tools, libraries, and documentation for developing software used in the modification of PDF files that interacts with Adobe Acrobat and Acrobat Reader. It provides multiple development approaches, including C++ plug-ins, JavaScript scripts, and interapplication communication (IAC) interfaces (opensource.adobe.com). Using these, developers can extend Acrobat’s functionality or integrate Acrobat into other software. Common project types include:
- External applications that programmatically control Acrobat/Reader (for example, to open PDFs, invoke menu actions, or batch process documents to modifify PDF files) (opensource.adobe.com).
- JavaScript scripts embedded in PDF documents or run at the application level to automate Acrobat or add interactivity to PDFs (opensource.adobe.com).
- C/C++ plug-ins that extend Acrobat’s capabilities by adding new menu items, tools, or processing logic, running within Acrobat’s process (opensource.adobe.com).
In essence, the Acrobat SDK allows developers to customize Acrobat or Reader and build solutions like automated document workflows, custom PDF editing tools to modify PDF files, batch processing utilities, or tight integrations between Acrobat and other enterprise systems.
C++ Plug-in Library (Core API)
Acrobat plug-ins are the primary way to extend Acrobat using C++ (or C) code. A plug-in is a dynamically-loaded library (.api on Windows) that Acrobat loads at startup (opensource.adobe.com). Each plug-in implements a required entry point (exported as PlugInMain
) that Acrobat calls during loading to “handshake” with the plug-in and initialize it (opensource.adobe.com). Once loaded, a plug-in can register new functionality (menus, tool buttons, event handlers, etc.) and call Acrobat’s Core API functions to manipulate PDF documents and the Acrobat application.
Plug-in Structure and Lifecycle: Plug-ins are placed in Acrobat’s Plug_ins
folder and are loaded automatically. Acrobat scans for files with the .api
extension and attempts to load each as a plug-in, invoking the PlugInMain
function in each module (opensource.adobe.com). Through this startup handshake, the plug-in can acquire interfaces to Acrobat’s functionality (via Host Function Tables) and register for notifications or user interface additions. Plug-ins can hook into many events (opening a document, page navigation, etc.) and can be configured to load only in Acrobat or also in Reader (with Adobe’s permission for Reader plug-ins). The SDK categorizes plug-ins into: regular Acrobat plug-ins, Reader-enabled plug-ins (which use a restricted API subset and require Adobe approval), and certified plug-ins (Adobe-signed, which Acrobat can be restricted to load exclusively for heightened security) (opensource.adobe.com) (opensource.adobe.com).
Core API Architecture: The Acrobat Core API is organized into several layers (opensource.adobe.com) (opensource.adobe.com), each providing a different level of abstraction for PDF and application manipulation:
- AV Layer (Acrobat Viewer): Enables control of the Acrobat application’s UI and high-level operations. Using AV functions, a plug-in can manipulate the Acrobat/Reader application itself — for example, adding custom menu items or toolbar buttons, opening or closing documents, and displaying dialogs (opensource.adobe.com) (opensource.adobe.com). (The AV layer is sometimes referred to as “AcroView” or the viewer layer.)
- PD Layer (Portable Document): Provides access to PDF document contents and structure. PD functions let plug-ins work with document-level objects like pages, annotations, bookmarks, and metadata (opensource.adobe.com). Within the PD layer, there are subsets such as PDFEdit for low-level page content (graphics, text objects, etc.) and PDSEdit for logical structure (tags, reading order) (opensource.adobe.com). A plug-in can, for instance, add or modify text on a page, create annotations, or read the text content of a PDF via PD-layer calls.
- AS Layer (Acrobat Support): A support layer providing utility functions and platform-independent services. AS functions handle tasks like memory management, file I/O, and thread-safe operations. Plug-ins can also override Acrobat’s file handling via AS layer to read/write PDFs from custom storage systems (opensource.adobe.com) (opensource.adobe.com).
- Cos Layer (Cos Object System): The lowest-level API, giving direct access to the PDF’s underlying object structure (Cos objects). Cos functions allow manipulation of PDF primitives – dictionaries, arrays, strings, streams – that make up a PDF file (opensource.adobe.com) (opensource.adobe.com). This layer requires detailed knowledge of the PDF specification but enables powerful modifications when higher-level APIs are insufficient (e.g., custom metadata or non-standard PDF features).
Using the core API (across these layers), plug-ins can perform virtually any operation that Acrobat itself can do – render pages, modify page content, create new PDFs, save changes, handle events, and interact with the user interface. The API is exposed as a large set of C-callable functions (organized in header files provided with the SDK) that operate on opaque data types representing Acrobat objects (opensource.adobe.com). For example, there are types like AVDoc
(an open document window), PDDoc
(a PDF document in memory), PDPage
(a page), and functions such as AVDocOpen
, PDDocSave
, PDPageAcquire
, etc., to work with those objects. A simple use case might be a plug-in that listens for a document open event and then uses PD-layer functions to add a watermark to each page, or an AV-layer function to insert a new menu item that triggers a custom action.
Using and Building Plug-ins: Adobe provides numerous C++ samples in the SDK illustrating common tasks (adding menu items, manipulating text, etc.). To build a plug-in, you compile a DLL (or Mac bundle) against the SDK’s headers and link with the Acrobat import libraries. On Windows, plug-in projects define the ACRO_SDK_API
macro and export PlugInMain
(the SDK provides a sample PIInit.cpp
to handle the handshake). The compiled module is renamed with a .api
extension and placed in Acrobat’s plug-ins directory (opensource.adobe.com) (opensource.adobe.com). When done correctly, Acrobat will load the plug-in at startup and your code can then call Acrobat’s API. Keep in mind that plug-ins must adhere to Acrobat version compatibility and (if targeting Reader) use only allowed APIs. Acrobat Reader will refuse to load a plug-in not specially enabled for Reader usage (opensource.adobe.com) (Reader plug-ins require special enabling and cannot perform operations like saving files unless the PDF itself has usage rights).
In summary, the C++ plug-in library (Acrobat core API) is a powerful way to extend Acrobat – offering fine-grained control over PDF contents and the Acrobat UI. It’s suitable for heavy-duty extensions like preflight tools, custom editors, encryption handlers, forms processing modules, or integration with external systems. Because it runs in-process with Acrobat, a plug-in must be robust; Adobe provides a signing mechanism for certified plug-ins to ensure security (opensource.adobe.com). Most of Acrobat’s own features (e.g. the Search, Forms, and Digital Signature features) are themselves implemented as plug-ins using this same API, which attests to its comprehensive capabilities (opensource.adobe.com).
Interapplication Communication (IAC) Interface
The Acrobat SDK also enables controlling Acrobat from an external application or script through the Interapplication Communication (IAC) interfaces. IAC allows other processes to launch Acrobat, open or create PDF documents, manipulate them, and even invoke JavaScript within Acrobat, without writing a plug-in. This is primarily achieved via COM/OLE Automation on Windows and Apple events/AppleScript on macOS (opensource.adobe.com). In addition, older mechanisms like DDE (Dynamic Data Exchange) are supported on Windows for backward compatibility (opensource.adobe.com).
Windows IAC (OLE Automation): On Windows, Acrobat exposes a COM Automation API (often referred to by the ProgID “AcroExch” interfaces). Using OLE, an external program (e.g. written in VB, C#, C++, or even VBA in Office) can create Acrobat objects and call their methods. For example, a Visual Basic application can create an AcroExch.App
object (representing the Acrobat application) and a AcroExch.PDDoc
object for a PDF, then call methods to open a PDF file and read or manipulate it (excel – Opening Acrobat Files using VBA – Stack Overflow). A short VBA example illustrates this:
Dim AcroApp As Object, pdfDoc As Object
Set AcroApp = CreateObject("AcroExch.App") ' Start Acrobat
Set pdfDoc = CreateObject("AcroExch.PDDoc") ' Create PDF Doc object
If pdfDoc.Open("C:\example.pdf") Then
' Successfully opened the PDF – now we can use pdfDoc methods
MsgBox "Opened PDF with " & pdfDoc.GetNumPages() & " pages."
End If
' ... (perform other operations, e.g., pdfDoc.Save, pdfDoc.Close, etc.)
AcroApp.Close
In the above, AcroExch.App
corresponds to the running Acrobat instance, and AcroExch.PDDoc
to a PDF document (with methods like .Open
, .Close
, .Save
, .GetNumPages()
, etc.). Similarly, there are other COM objects (e.g. AcroExch.AVDoc
for a document’s viewing window, AcroExch.HiliteList
for text highlights, etc.) that can be used to manipulate the UI or content. Under the hood, these are implemented by Acrobat’s IAC support. OLE automation can be used for tasks like opening PDFs invisibly, extracting text, printing documents, or executing JavaScript in the PDF context via the JSObject interface (Acrobat provides a JSObject
bridge to run internal PDF JavaScript from external code) (opensource.adobe.com).
Notably, Adobe only supports OLE automation with the full Acrobat – Acrobat Reader does not support the COM interface (with the exception of the limited PDF viewing ActiveX control) (opensource.adobe.com). This means to use IAC methods like AcroExch.PDDoc.Open
, you must have Acrobat (Standard or Pro) installed; Adobe Reader cannot be driven in the same way (Reader’s API is restricted to viewing). Also, Acrobat’s OLE automation is single-threaded and synchronous – the external app must call methods one at a time and wait for each to complete (opensource.adobe.com).
Through COM, Acrobat provides three major capabilities to other apps: rendering PDF pages (e.g. to display or convert to image), remote controlling Acrobat (opening files, navigating, invoking menu items), and embedding a PDF viewer (Acrobat’s ActiveX control for viewing PDFs in another app’s window) (opensource.adobe.com). The last capability is what allows Acrobat to display PDFs inside web browsers (via the Adobe PDF ActiveX plug-in) and can also be used in custom applications – for example, embedding the AcroPDF
ActiveX control in a C# application to show PDFs within a form. (However, Adobe notes that using the Acrobat Reader ActiveX control outside of Internet Explorer/Edge isn’t officially supported by the license (opensource.adobe.com), even though technically many developers have done so for internal applications.)
macOS IAC: On macOS, Acrobat exposes functionality via Apple events (AppleScript). A script or application can send Apple events to Acrobat to do things like open documents, print, or invoke menu actions (Javascript; Interapplication Communication; Plug-Ins – Adobe ACROBAT SDK V8.0 Manual [Page 9] | ManualsLib). For instance, an AppleScript could tell Acrobat to open a file or get the number of pages. The Acrobat SDK AppleScript dictionary defines the supported events. The overall IAC capabilities on Mac are analogous to Windows (though COM is not used on Mac).
Use Cases: Interapplication communication is commonly used for integrating Acrobat into automated workflows or other software without creating a full plug-in. Examples include: a document management system that calls Acrobat to convert files to PDF or batch-print PDFs, a Microsoft Office macro that uses Acrobat to combine PDFs or extract text, or a custom .NET application that leverages Acrobat to display PDFs to users and then sign or watermark them. In managed languages like C# or VB.NET, developers can use Acrobat’s COM interface (importing Acrobat’s type library or using CreateObject
) – the Acrobat SDK explicitly supports IAC from managed languages via a JavaScript bridge for full functionality (opensource.adobe.com). In practice, this means a C# program could launch Acrobat in the background, load a PDF, and run an Acrobat JavaScript (through the JSObject
) to manipulate the document, effectively leveraging Acrobat’s internal JavaScript API from outside (opensource.adobe.com).
Important: The IAC interfaces require Acrobat to be installed on the user’s machine. They essentially drive the Acrobat application, which will be visibly running (sometimes it can be hidden, but Acrobat may flash or show UI for certain operations). For headless server-side processing of PDFs, Adobe provides the separate Adobe PDF Library SDK, which allows PDF manipulation without Acrobat (opensource.adobe.com) (since using Acrobat on a server or multithreaded context is not supported). But for client-side or desktop automation, IAC is the go-to approach. It enables powerful integrations, such as one-click PDF processing from Word or AutoCAD, or custom buttons in an ECM (Enterprise Content Management) system that offload PDF tasks to Acrobat.
Acrobat JavaScript Model
JavaScript in Acrobat is a built-in scripting environment that allows PDF authors and developers to automate and enhance PDF documents. Acrobat’s JavaScript is based on core JavaScript (Adobe’s implementation corresponds to ES3/JS1.7 depending on Acrobat version (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference) (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference)) with a large number of Acrobat-specific extensions. These extensions expose Acrobat/Reader features to scripts embedded in PDFs or run in Acrobat’s console (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference). In effect, the Acrobat JavaScript model lets you control the PDF document and the application from inside, similar to how a web page’s JS can interact with a browser.
Capabilities: Acrobat’s JavaScript extensions cover a wide range of functionality. Scripts can respond to user actions (such as form field events or page open events) and perform operations like:
- Form processing – Validate input, perform calculations, show/hide form fields, and submit form data. Acrobat JS can access form field properties and values, making it essential for interactive PDF forms (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference).
- Document automation – Modify the PDF content or perform tasks when a document is opened or saved. For example, a script might automatically insert a footer, add an annotation, or aggregate data when a PDF is opened.
- Batch processing – Via Acrobat’s Action Wizard or console, JavaScript can be run on multiple PDFs to automate repetitive tasks (e.g. print all PDFs in a folder, rename fields across many forms) (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference).
- Collaboration workflows – Manage review comments or implement routing. (Acrobat’s online review and commenting features can be scripted, and custom collaboration schemes can be built on top of Acrobat’s annotation objects) (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference).
- Database and network communication – Acrobat JS can connect to web services or databases (e.g., using SOAP connect or older ADBC for ODBC databases) (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference). This allows scenarios like populating a PDF form with data from a database or submitting form results to a server.
- Multimedia and 3D – Control embedded rich media in PDFs (audio/video playback, 3D model interactions) via script (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference).
- Application UI control – A script can perform some application-level actions, like displaying alerts (
app.alert
), opening new documents (app.openDoc
, if privileged), or even adding menu items (viaapp.addMenuItem
in a folder-level script).
Overall, the JavaScript object model in Acrobat includes objects such as:
app
(the Acrobat application itself – with properties for the viewer UI and methods likeapp.alert()
,app.newDoc()
, orapp.execMenuItem()
to simulate menu clicks),doc
(the active PDF document – represented in scripts asthis
when running inside a PDF, with methods to manipulate content, e.g.this.saveAs()
,this.print()
,this.getField()
to access form fields, etc.),field
(form field objects within a PDF form, allowing you to set field values, highlight fields, perform calculations),- other objects for annotations, multimedia, security, etc. For instance, there are
Annot
objects for comments/markup,Media
objects for embedded media,Collab
objects for review workflows, and so on. Adobe provides a complete JavaScript API Reference documenting these objects, their properties, and functions (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference).
Script contexts and privileges: Acrobat JavaScript can run in different contexts, which affect what the script can do. Major contexts include:
- Document-level scripts – Scripts embedded in a PDF that execute when the document is opened. They can define functions or perform initialization. They run with document scope (limited privileges).
- Page scripts – Scripts that run on specific page open/close events.
- Field scripts – Attached to form field events (like OnBlur, OnFocus, OnValueChanged). These run when the user interacts with form fields.
- Folder-level scripts – Placed in Acrobat’s JavaScripts directory on the user’s machine (not in the PDF). These load when Acrobat starts and run with application scope. They can add global menus or functions and often execute with elevated privileges.
- Console and Batch – Code run manually in Acrobat’s JavaScript console or via an Action (batch process) – these run in a privileged context.
The level at which a script runs determines its privilege and lifetime (opensource.adobe.com). For example, a folder-level script (application-level) can do things that a document script cannot, such as silently saving a file or launching an external app, because it’s trusted (installed on the user’s system). Document scripts are more restricted for security.
Security Considerations: Because PDFs can contain JavaScript, Acrobat has a security model to prevent abuse. Many potentially sensitive operations are classified as privileged – for instance, accessing the file system (reading/writing files), sending data to a server, or executing external commands are restricted. Such operations can only be performed in a privileged context (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference). Privileged contexts include scripts at the application level (console, batch, or certified trusted documents). If a document script tries to perform a privileged operation, it will be blocked or prompt the user, unless explicitly allowed. Acrobat provides mechanisms like app.trustedFunction
to temporarily elevate privileges for specific tasks, but these require user installation or document certification (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference) (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference). In effect, Acrobat sandboxes document scripts to protect the user: for example, a PDF from the internet cannot silently read your disk or send emails unless you trust it. Administrators can also lock down Acrobat’s JS via preferences if needed.
Additionally, Acrobat Reader (the free viewer) imposes further limitations: Reader will not execute certain APIs at all (especially those that modify documents or save changes) unless the PDF is Reader-extended with special usage rights (opensource.adobe.com). For example, this.saveAs()
is not available in Reader unless the PDF has been granted save rights. This is another security and product-differentiation measure.
Using Acrobat JavaScript – Example: Writing scripts is often easier than plug-ins for many tasks. Simple examples: to display a message to the user, one can call:
app.alert("Hello from Acrobat JavaScript!");
To create a new blank PDF and add a page, a script might do:
var doc = app.newDoc(); // Create new PDF document
doc.insertPages({ nPage: 0, cPath: "template.pdf" }); // perhaps insert from template
// ... manipulate the doc ...
doc.saveAs({ cPath: "output.pdf" });
Or, within a document, to get a form field value and do something:
var f = this.getField("TotalAmount");
if (f.value > 1000) {
app.alert("Large amount: " + f.value);
}
The Acrobat JS API includes hundreds of methods. For instance, one common use is flattening a form (making form fields part of the page content) which can be done by iterating fields and setting readonly
or using doc.flattenPages()
. Another is digital signatures: Acrobat JS can apply digital signatures to a document (if the user has a certificate) via the document.signDoc()
method.
In combination, these capabilities make Acrobat JavaScript a powerful tool for client-side document automation. Unlike web JavaScript, Acrobat JS can interact with the local system (with security checks) – e.g., to save a file or look up a local database – making it suitable for enterprise forms and workflow applications. Many PDF solutions (like order forms, expense reports, etc.) rely on Acrobat JS for calculations and validation. Because JavaScript is easier to write and deploy (just embed in the PDF or as an Acrobat config script) compared to C++ plug-ins, it’s often the first choice for quick customizations or cross-platform support. The SDK includes a JavaScript Debugger (accessible via Acrobat’s console) to test and troubleshoot scripts, and extensive documentation of the JavaScript API (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference).
Integration with Other Applications
Beyond plug-ins and JavaScript, the Acrobat SDK supports various integration methods to use Acrobat’s functionality within larger systems or in tandem with other software:
COM/ActiveX Integration (Windows): As discussed under IAC, a common integration is embedding Acrobat’s PDF viewer ActiveX control (
AxAcroPDF
) into an application to display PDFs. For instance, a C# WinForms or C++ MFC application can host this control on a form, allowing it to render PDF content within the app’s UI. The control exposes methods likeLoadFile()
to open a PDF and some navigation/print functions. This is how Internet Explorer and Microsoft Office integrate PDF viewing. While Adobe’s license is restrictive about using the control in third-party apps (it’s meant for browsers), technically many organizations have used it for internal solutions to provide PDF viewing and basic navigation in custom apps. The control is part of Reader/Acrobat installation and is essentially a window into Acrobat’s rendering engine.Office and CAD integrations: Adobe provides Acrobat “PDFMaker” add-ins for Office, but with the SDK, developers can create their own integrations. For example, a company might write a Word macro or plugin that uses Acrobat’s IAC API to automatically convert documents to PDF with certain settings when a user clicks a custom button. Similarly, engineering software could call Acrobat (or Acrobat Distiller) via IAC to convert PostScript files to PDF in an automated workflow (Automate creating PDF files using Acrobat Distiller. – Google Groups).
.NET and Java integrations: Adobe does not supply a dedicated .NET SDK for Acrobat, but as noted, .NET can use the COM interfaces. By adding a reference to Acrobat’s type library (Acrobat.tlb), a C# application can get early-bound access to the Acrobat COM classes. This allows using Acrobat’s APIs in a .NET idiomatic way. The Acrobat SDK supports this approach, enabling managed code to drive Acrobat (opensource.adobe.com). Likewise, with Java, one could use JNI or third-party COM bridges to use Acrobat (not as direct, but possible on Windows). These approaches let enterprise applications (written in modern languages) incorporate PDF capabilities via Acrobat. For example, a C# document management service could use Acrobat to watermark and sign PDFs as they are checked into a system, or to extract text for indexing.
Cross-application Communication: Acrobat plug-ins can also communicate with external apps. The SDK samples include examples like a plug-in that listens for custom DDE messages from another process (opensource.adobe.com). This means an external app could send a DDE command or Windows message that the plug-in responds to, enabling tight two-way integration (though this is an older technique). On macOS, a plug-in could listen for Apple events from other apps. These methods are more complex, but sometimes used in specialized workflows (for instance, an asset management system might have a plug-in in Acrobat so that when the user opens a file, the plug-in notifies the asset management app, etc.).
Adobe PDF Library (PDFL) SDK: It’s worth noting again that if an integration requires PDF processing without an Acrobat UI at all (for example, a backend server converting files or a mobile app rendering PDF), Adobe offers the PDF Library SDK as a separate product (opensource.adobe.com). PDFL is essentially the core PDF manipulation engine from Acrobat but packaged as a library you link into your own code, with no Acrobat installation needed. It’s used for OEM purposes. While not part of “Acrobat SDK” proper, it’s an alternative for integration when the Acrobat application isn’t suitable.
In summary, the Acrobat SDK’s integration options allow Acrobat to act as a PDF engine within a larger system. Automation via COM is commonly used for one-off tasks (e.g., a script that mass-produces PDFs), whereas plug-ins are for in-App extensions, and JavaScript for in-document intelligence. By mixing these, one can achieve sophisticated integrations — for example, a plug-in might expose a custom COM interface that an external app can call, or an external app might inject JavaScript into PDFs via the JSObject to accomplish something in a document. The flexibility of options (C++, JS, IAC) means integrators can choose the best tool for the job. Adobe’s documentation and samples provide guidance on each integration scenario, and many community examples (on forums and Stack Overflow) demonstrate how to use them.
Practical Use Cases and Industry Applications
The Acrobat SDK has been used across industries to build specialized PDF solutions. Some real-world use cases include:
Automated Form Workflows: Businesses and government agencies use Acrobat’s JavaScript and IAC to streamline form processing. For example, an insurance company might create an Acrobat folder-level script that batch-imports data into form fields and then submits the forms via web service (opensource.adobe.com). Using Acrobat JS, form PDFs can connect to databases or web APIs to fetch data (populate fields) and validate inputs in real-time (opensource.adobe.com). This reduces manual data entry and errors. In government, interactive PDF forms (with scripted validation and calculations) are common for permit applications, tax forms, etc., because they can be deployed easily to end-users with just Acrobat Reader.
Batch PDF Processing in Enterprises: The combination of IAC and Acrobat’s rich PDF capabilities allows companies to automate bulk document tasks. A finance department could use a Visual Basic script that drives Acrobat to open a set of invoices and apply a digital signature and timestamp to each, then save them. Or a legal firm might use an Acrobat Action (JavaScript) to add Bates numbering to hundreds of PDFs at once. Acrobat’s SDK supports batch printing, conversion, and data extraction – e.g., extracting text from a batch of PDFs by driving Acrobat via COM to use the
AVDoc.GetText
or JavaScriptDoc.getPageNthWord()
methods. These kinds of workflows save time in document-intensive industries.PDF Prepress and Printing Industry: Perhaps one of the most extensive uses of Acrobat plug-ins is in the professional printing and publishing industry. Tools like Enfocus PitStop Pro are Acrobat plug-ins built with the SDK that provide advanced PDF editing and preflight (error checking according to print standards) within Acrobat (PitStop Pro. Print-ready PDF files. Every time. – Enfocus). PitStop Pro adds its own menus and panels to Acrobat, allowing print shops to automatically detect and fix issues in PDF files (colors, fonts, bleeds, etc.) right inside Acrobat (PitStop Pro. Print-ready PDF files. Every time. – Enfocus). This is a prime example of a third-party extending Acrobat’s capabilities for a specialized application. Other prepress plug-ins can impose pages for booklets, manage versioning, or convert colors – all leveraging the core API to manipulate PDF content.
Document Security and Signing: Many companies integrate Acrobat with their security infrastructure. For instance, a custom plug-in might enforce a company’s document security policy by hooking into Acrobat’s save event – if a PDF is being saved and contains certain content, the plug-in could alert or modify permissions. There are also plug-ins for digital signatures (some digital ID providers create Acrobat plug-ins to integrate their signing hardware or cloud service). Acrobat’s SDK has support for reading certificate info, adding signature fields, etc., which is utilized in industries like legal and finance to ensure documents are properly signed and certified.
Enterprise Content Management (ECM) Integration: ECM or document management systems often use Acrobat for viewing and editing PDF files in a controlled way. An example scenario: an ECM client application opens PDFs in Acrobat but needs to track when the user has finished reviewing. Using IAC, the ECM software can listen for Acrobat’s events or periodically query Acrobat (via COM) to see if the document is closed, then perform follow-up actions (like prompt the user to check the document back in). Some ECM systems install Acrobat plug-ins that add toolbar buttons (e.g., “Save to Repository”) which on click will gather the PDF data (via core API) and send it to the ECM backend. This tight integration is made possible by the SDK’s ability to communicate externally and internally.
Integration in Custom Products: Acrobat SDK is also used to build custom PDF viewers/editors for niche markets by embedding Acrobat’s engine. For example, in the architecture/engineering field, a company might embed Acrobat in their CAD software, so users can click a “View PDF” button and see the drawing’s PDF without leaving the CAD program. Or a workflow tool might generate a PDF report and automatically open it in Acrobat for the user to review, then use JavaScript to prompt for approval and send the result back. Because the SDK allows controlling Acrobat almost like a component, many such scenarios are viable.
In all these cases, Adobe’s documentation and forums are valuable resources. The Acrobat SDK comes with a Samples Guide that references dozens of sample projects demonstrating common tasks (e.g., “Send Mail” JavaScript, “BasicIAC” for COM automation, “Starter” plug-in template, etc.), which developers often adapt to their needs. Over the years, a community of Acrobat SDK developers has grown, sharing knowledge on Adobe’s forums (acrobat-sdk) and sites like Stack Overflow. This makes it easier to find guidance for specific industry-specific challenges – whether it’s how to extract table data from PDFs via JavaScript, or how to integrate Acrobat with a content workflow system.
References: The information above is based on Adobe’s official Acrobat SDK documentation and developer guides, including the Acrobat SDK Overview (opensource.adobe.com) (opensource.adobe.com), the Plug-in Developer Guide (opensource.adobe.com) (opensource.adobe.com), and the JavaScript API Reference (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference) (Acrobat JavaScript API Reference — Acrobat-PDFL SDK: JavaScript Reference). Real-world usage examples such as Enfocus PitStop Pro are documented by the vendor and widely recognized in the industry (PitStop Pro. Print-ready PDF files. Every time. – Enfocus), illustrating the power of Acrobat plug-ins. The Acrobat SDK continues to be a critical toolset for developers building PDF solutions that leverage the trusted Acrobat platform inside applications and workflows.
The Acrobat SDK is available for Windows and Mac operating systems. The Acrobat SDK is available for Windows and MacOS, and it includes APIs for a wide range of capabilities, including:
- Creating and manipulating PDF files
- Working with PDF forms
- Adding and Extracting text and images from PDF files
- Adding and modifying custom and existing annotations
- Merging and splitting PDF files
- Validating, optimizing and repairing PDF files
- Adding Custom Digital Signatures
Developers can use the Acrobat SDK to build custom solutions for a variety of purposes, such as automating PDF-based workflows, integrating Acrobat and PDF functionality into other applications, and developing custom plug-ins and tools for Acrobat.
Adobe® PDF Library SDK for out of Acrobat PDF solutions (also server and web)

We can provide out of Acrobat PDF solutions that can be made available on server and web based environments (the cloud). We do this using the Adobe PDF library.
In using the Adobe PDF library, we can be confident that the PDF technology used is up-to-date and compatible with all PDF files in use today. The PDF files can be saved and generated in accordance with all of the PDF standards such as the standard ISO 32000 (PDF 1.7), PDF/A, PDF/X, PDF/E. PDF/UA, PDF/VT.
The Adobe® PDF Library is the core engine of Adobe® Acrobat® and Adobe® Reader. There is also a 64bit version available for the Windows platform that can more easily be integrated into server and web platforms and .NET and ASP.NET Core interfaces available in the Datalogics licensed version.
A lot of code, if written in C++ is compatible with the plug-in part of the Acrobat SDK and so you can have an Acrobat plug-in and Server or Cloud version running off the same code base. The .NET and Java interfaces are specific to the PDF Library
C++ common Interfaces for Acrobat Plug-ins and the Adobe PDF Library

OEM Licensee of the Adobe PDF Library
Mapsoft has been an OEM licensee of the Adobe® PDF Library for many years and we have extensive experience of developing with this technology using both the c++ and c# interfaces. The PDF library is an integrated part of our Engage products.