data-id=developing-for-64-bit-windows

Developing for 64-bit Windows

To start developing, download and unzip latest Acrobat SDK zip file.

data-id=system-requirements

System requirements

data-id=upgrading-32-bit-plugins-to-64-bit

Upgrading 32-bit plugins to 64-bit

  1. Add 64-bit configuration in existing project and copy the settings from 32-bit configuration.
  2. Replace headers files with header files present inside SDKPluginSupport of current Windows 64-bit Acrobat SDK Pre-Release package
  3. Fix any build errors.
data-id=creating-a-64-bit-plugin

Creating a 64-bit plugin

  1. Follow the steps for creating simple plugin in Developing plugins and Applications.
  2. Add the 64-bit configuration to plugin project.
  3. Fix any build errors.
data-id=plugin-compatibility-unified-app

Plugin compatibility: unified app

data-id=plugins-for-acrobat-mode

Plugins for Acrobat mode

Check for the product mode and return false at the beginning of the handshake function of Reader mode. If the app mode changes to Acrobat, the plugin will be available in the next session after app relaunch.

ACCB1 ASBool ACCB2 PIHandshake(Uns32 handshakeVersion, void *handshakeData)
{
   char* product = (char*)ASGetConfiguration(ASAtomFromString("Product"));
  if(strcmp(product,"Reader") == 0)
  return false;

  // Insert existing code of your handshake function.

}

Tip

Use the approach above for Acrobat-only plugins. If above approach is not followed, then installing such plugin in application running in reader mode will show below dialog and app will quit.

[invalidplugin.png]

data-id=plugins-for-acrobat-reader-mode

Plugins for Acrobat & Reader mode

Sign your plugin with the Arobat SDK’s signing tools. This will allow loading of plugin in Reader mode but restricts Acrobat functionality based on the product check. Disable some or all functionality based on the product check. It would become available as soon as the app mode changes to Acrobat. If you are caching the results of a product check, it’s advisable to refresh the cache in response to a product switch notification.

You can toggle functionality in response to a product mode check as follows:

bool IsXXXFunctionalityAllowed()
{
  char* product = (char*)ASGetConfiguration(ASAtomFromString("Product"));
  if(strcmp(product,"Reader") == 0)
  return false;
  return true;
}
//Alternative Implementation
bool IsXXXFunctionalityAllowed()
{
  char* product = (char*)ASGetConfiguration(ASAtomFromString("Product"));
  if((strcmp(product,"Exchange-Pro") == 0) || (strcmp(product,"Exchange-Std") == 0))
  return true;
  return false;
}
data-id=product-mode-strings

Product mode strings

Possible string values include:

The last two values are two different configurations of Acrobat, and 3rd party plugin developers need not use them.

data-id=plugin-behavior-app-mode-changes

Plugin behavior: app mode changes

A plugin can react to application mode change by registering a callback for AcroAppModeSwitch notification. Mode switch notification:

// Callback proc for mode switch notification.
ACCB1 void ACCB2 AcroAppModeSwitchNotification(void* clientData)
{
  AVAlertNote("Acrobat SDK - Mode Switch Notification");
}
// Refer BasicPlugin in SDK Samples.
ACCB1 ASBool ACCB2 PluginInit(void)
{
// Register for mode switch notification.
  AVAppRegisterNotification(AcroAppModeSwitchNSEL, gExtensionID,
  (void*)ASCallbackCreateNotification(AcroAppModeSwitch, AcroAppModeSwitchNotification), NULL);
  return MyPluginSetmenu();
}
data-id=plugins-enabling-reader-mode

Plugins: enabling Reader mode

To enable Reader mode in the 64-bit unified application, perform the steps below.

data-id=compilation

Compilation

Product differentiation (Reader vs Acrobat) at compile time is not currently possible; therefore, do not use the READER_PLUGIN macro during compilation.

data-id=signing-process

Signing Process

The processs remains the same as with the previous SDK for 64-bit unified app in Reader mode:

  1. Create the public/private key pairs via the MakeKey utility.
  2. Submit the public key file to Adobe to generate the certificate.
  3. Sign the plugin with the private key and certificate using the SignPlugin utility

Note the following:

data-id=plugins-and-protected-mode

Plugins: and Protected Mode

data-id=generic-recommendations

Generic recommendations