Content for a publication is generated by various team members using different applications: InDesign, Content Station, and InCopy.
When users work on a file that is placed on a layout such as an article or an image, they can view a preview of the layout on which that file is placed to verify the end result.
However, generating a new preview of the layout that shows the changes that the user made is an action that is performed by InDesign and involves opening the layout and saving it back to Enterprise. Especially for users of InCopy and Content Station this is not very practical: it would be time consuming, require InDesign skills and additional InDesign licenses.
Additional tasks that are performed by InDesign (such as generating thumbnails or PDFs, typically done when a file is saved) can also be very time consuming. Instead of manually performing these tasks by using the InDesign client they can be automated by implementing InDesign Server Automation.
Info: This article contains references to macOS. Running Enterprise Server 10 on macOS is only supported on Enterprise Server version 10.8 or lower.
Handing off the process to InDesign Server
When a large InDesign Server farm with plenty capacity is available, the tasks of generating previews, thumbnails, or PDFs can best be handled by the InDesign Server instances of that farm. This way, all users have an updated layout preview available shortly after the edited file is saved and waiting times for tasks such as checking-in a layout in InDesign is much reduced.
When to offload?
You would not offload tasks to InDesign Server when:
- Insufficient capacity exists on an InDesign Server farm or no InDesign Server farm is installed at all
- InDesign client runs on a fast machine and is connected to a fast LAN
You would offload tasks to InDesign Server when:
- InDesign client runs on a slow machine or runs on a remote location
- Layouts are very frequently saved or article or layouts are always automatically saved to Enterprise instead of saving them locally
- Layouts have many pages (such as books) and/or vary for many Editions
- PDF (or EPS) files must be provided for layout versions (for all Workflow Statuses)
Tip: Use InDesign Server Jobs prioritization to set up dedicated InDesign Server pools for processing specific tasks:
|
How it works
The process is as follows:
- The machine running idsjobindex.php is continuously watching the InDesign Server Job queue.
- It will try to match jobs with InDesign Server instances. A match will be made when the job is still TODO and when an InDesign Server instance is available that matches the min/max versions specified for the job.
- When a match could be made, the InDesign Server Dispatcher will start the InDesign Server Job Processor. The processor runs on another PHP process and is started by the dispatcher with the help of cURL.
- Like the dispatcher, the processor runs within the idsjobindex.php module. It receives the InDesign Server instance and the job to process through its URL. In other words: you only have to configure the dispatcher which will start the processors for you.
- The processor will run the InDesign Server job and wait for InDesign Server to complete. Once completed it will update the job with a new status, script logging and/or error information.
- When a layout file is opened for editing by an end user at the time the job is started while the job wants to update the layout, it will fail and put the job into a 'Locked' status.
- When the layout is checked-in again, the job status will be set to 'Replanned' again.
- When there is no InDesign Server instance found for a job, the status will also be set to 'Unavailable'.
- When the scheduler is at end of life time (after 1 minute) it will check which of the jobs with status 'Unavailable' can be set back into the 'Replanned' status.
- When jobs fail for other reasons they may be retried up to 3 times. When all have failed, the Error status will change to 'Fatal' to indicate that the job will not be executed anymore.
- When successful, the job status will be set to 'Completed'.
Note: The idsjobindex.php file that is executed is designed for a setup containing multiple application servers. It is periodically run in "dispatcher" mode and is semaphore protected: there will be only one dispatched which dies off at a set time after which the scheduler creates another instance, and so on. Even when many dispatcher processes are created (one per application server), only one will become the real dispatcher because of the semaphore protection. When it finds a match between an InDesign Server instance and a job, it calls itself asynchronously via cURL but now with a parameter that tells itself to run in processing mode. This is seen as another process that is separate from the dispatcher. The process running in processing mode can run in parallel with any other process because they all get one InDesign Server instance and one job to work with which will never be conflicting. |
Installation and configuration
To make use of the InDesign Server Automation feature, perform the following steps.
- Enable the Enterprise Server plug-in
- Install and configure InDesign Servers
- Install a Scheduler
- Configure the Scheduler for the InDesign Server Job Dispatcher
- Configure preview and output generation
- Configure when the InDesign Server Automation should not be triggered
Step 1. Enabling the Enterprise Server plug-in
The feature is provided by an Enterprise Server plug-in named InDesign Server Automation which is shipped with Enterprise. Enable this plug-in on the Server Plug-in page in Enterprise Server by clicking its icon.
In Enterprise Server, click Server Plug-ins in the Maintenance menu or on the Home page.
Step 2. Installing and configuring InDesign Servers
Make sure that InDesign Servers are installed and configured in Enterprise Server. See Configuring the Enterprise Server instance for InDesign Server to log in to.
Step 3. Installing a Scheduler
Step 1. Make sure that cURL is installed.
macOS / Linux
cURL is pre-installed on these platforms; no further action is needed.
Windows
Step 1. Download the 32-bit or 64-bit binary package from http://curl.haxx.se.
Step 2. Extract the package into any folder, for example c:\curl.
Step 3. Test if cURL works by starting the Command Prompt and typing the following command:
c:\Curl\curl.exe --version
The installed URL version information should be displayed.
Step 2. Use a scheduler of your choice.
- CronniX for macOS. CronniX is a GUI for Crontab and makes its configuration a little easier. Crontab is pre-installed on macOS. Download CronniX from the internet.
Note: Alternatively, you can skip the CronniX installation and use Crontab directly, but then follow the configuration instructions written for Linux.
- Task Scheduler for Windows. Task Scheduler is pre-installed for Windows. No further action is therefore needed.
- Crontab for Linux. Crontab is pre-installed for Linux. Therefore, there is no further action needed.
Step 4. Configuring the Scheduler for the InDesign Server Job Dispatcher
Step 1. Start the CronniX application.
Step 2. Choose File > Next Task.
Step 3. Access the Simple tab.
Step 4. Select the check boxes for Minute, Hour, Day of month, Month, and Day of week.
Step 5. In the Command box, type the following (make sure to add the URL in double quotes and adjust the server URL):
curl "<server url>/idsjobindex.php?maxexectime=60"
Step 6. Click New.
Step 7. Choose File > Save.
Step 8. (Optional) In the Terminal, type the following command to see that (under the hood) the configuration is actually saved for Crontab:
crontab -e
Step 1. Edit the Crontab configuration by typing the following command:
crontab -e
Step 2. Press the [i] key to enter ‘insert’ mode and add one line below the header as follows:
Notes:
|
# min hour mday month wday command
* * * * * curl "http://127.0.0.1/Enterprise/idsjobindex.php?maxexectime=60"
Step 3. Press Shift+Z twice to exit and save changes.
The saved changes are directly effective in Crontab.
Step 1. Go to Control Panel > Administrative Tools.
Step 2. Start the Task Scheduler.
Step 3. From the Action menu, choose Create Task.
Step 4. Access the General tab.
Step 5. In the Name box, type Enterprise - InDesign Server Job.
Step 6. Select the option Run whether user is logged on or not.
Step 7. Access the Triggers tab.
Step 8. Create a new trigger with the following settings:
- Begin the task: On a schedule.
- Settings: Daily, set start date & time, Recur every 1 days.
- Advanced settings:
- Repeat task every 1 minute, for a duration of 1 day, Enabled.
- Clear the option Stop all running tasks at end of repetition duration.
Step 9. Click OK.
Step 10. Access the Actions tab.
Step 11. Create a new action.
Step 12. In the Program/script box, type:
"c:\Curl\curl.exe"
Step 13. In the Add argument box, type the following (make sure to add the URL in double quotes):
"http://127.0.0.1/Enterprise/idsjobindex.php?maxexectime=60"
Step 14. Access the Settings tab and do the following:
- Clear the option If the running task does not end when requested, force it to stop
- Set the option If the task is already running, then the following rule applies: to Run a new instance in parallel
Some notes on the URL:
|
Tip: To reduce the overhead that is created by each request, the Dispatcher could be instantiated less frequently. For example, you may want to increase the execution time to 5 minutes and also make a periodic call every 5 minutes. This results in less frequent calls while still having full coverage. Note however that when in this scenario the Dispatcher crashes or when the InDesign Server machine goes down, it may take up to 5 minutes before another Dispatcher takes over. |
Step 5. Configuring preview and output generation
The generation of preview files and output files can be configured on the following levels:
- Per client type: InDesign or InDesign Server
- For local or remote clients
Preview and output generation is triggered when:
- An article, image, Layout Module or spreadsheet that is placed on a layout is saved to Enterprise.
- A layout is saved to Enterprise in a status for which the Output option is enabled while the configured processing tasks differ between InDesign client and InDesign Server (see the CLIENTFEATURES option below).
- The status for a layout is changed (for example through Set Properties) into a status for which the Output option is enabled.
Setting up this environment involves various configuration steps in Enterprise Server.
Tip: (For Enterprise Server 10.1 or higher only) Easily manage and configure settings of all configuration files by adding them to a single configuration file.
Step 1. Open the configserver.php file for your Enterprise Server installation.
<Enterprise Server path>/config
Step 2. In the Remote users section, define which client users should be treated as remote users or local users.
Step 2a. Define the IP addresses of the users who should be treated as a remote user under the INCLUDE option (for details about defining these addresses see below):
define( 'REMOTE_LOCATIONS_INCLUDE', serialize( array(
)));
Step 2b. Define the IP addresses of the users who should be treated as a local user under the EXCLUDE option (for details about defining these addresses see below):
define( 'REMOTE_LOCATIONS_EXCLUDE', serialize( array(
)));
Defining IP addresses
Use any of the following notations:
IP range | Matches with |
---|---|
'192.0.0.1' | '192.0.0.1' only |
'192.0.0.*' | ['192.0.0.0'...'192.0.0.255'] |
'192.0.*.*' | ['192.0.0.0'...'192.0.255.255'] |
'192.0.0.0/16' | ['192.0.0.0'...'192.0.255.255'] |
'192.0.0.0/24' | ['192.0.0.0'...'192.0.0.255'] |
'192.0.0.0/255.255.0.0' | ['192.0.0.0'...'192.0.255.255'] |
'192.0.0.0/255.255.255.0' | ['192.0.0.0'...'192.0.0.255'] |
'192.0.0.0-192.0.0.255' | ['192.0.0.0'...'192.0.0.255'] |
'192.0.0.0-192.0.255.255' | ['192.0.0.0'...'192.0.255.255'] |
'2001:db8::1' | '2001:db8:0:0:0:0:0:1' only |
'2001:db8::/32' | ['2001:db8:0:0:0:0:0:0'...'2001:db8:ffff:ffff:ffff:ffff:ffff:ffff'] |
'2001:db8::/64' | ['2001:db8:0:0:0:0:0:0'...'2001:db8:0:0:ffff:ffff:ffff:ffff'] |
'2001:db8::-2001:db9::' | ['2001:db8:0:0:0:0:0:0'...'2001:db9:0:0:0:0:0:0'] |
'2001:db8::-2001:db8::ff' | ['2001:db8:0:0:0:0:0:0'...'2001:db8:0:0:0:0:0:ff'] |
Examples:
|
Step 3. In the CLIENTFEATURES section, define which processing tasks need to be performed by InDesign and which by InDesign Server.
This is done by configuring two arrays: one for InDesign client and one for InDesign Server. In each array, define the processing tasks (if any) that need to be performed. (For a list of tasks that can be added, see the end of this step.)
define ('CLIENTFEATURES', serialize(array(
'InDesign' => array(
'local' => array(
new Feature( 'XXX' ),
),
'remote' => array(
new Feature( 'XXX' ),
),
),
'InDesign Server' => array(
'default' => array(
new Feature( 'XXX' ),
),
'IDS_AUTOMATION' => array(
new Feature( 'XXX' ),
new Feature( 'YYY' ),
),
),
)));
The following arrays are used:
- For InDesign client:
- local. Controls the features at client level.
- remote. Controls the features at client level based on included or excluded IP addresses (see step 2 above).
- For InDesign Server:
- default. Controls the features used for fallback InDesign Server automations for all InDesign Server custom jobs where no array is defined.
- IDS_AUTOMATION. Controls the features used for the InDesign Server Automation job type (required for native InDesign Server integration).
Note: When the exact same configuration is made under 'local', 'remote' and 'IDS_AUTOMATION', layout save operations will never trigger InDesign Server Automation. However, changing placed content in Studio or InCopy will still trigger it.
Example:
This example results in the following system behavior:
|
Use any of the following features:
new Feature( 'CreatePageEPS' ),
Creates an EPS file for each page of the layout when the layout is saved to the File Store. When a page varies per Edition, an EPS file is generated for each Edition.
All EPS files are uploaded along with the document.
Note: It cannot be used when the CreatePagePDF option is also enabled.
new Feature( 'CreatePageEPSOnProduce' ),
Creates an EPS file for each page of the layout when the layout is saved by Smart Connection for InDesign to a Workflow Status for which the Output option is enabled. See Creating Workflow Statuses in Enterprise Server 10.
When a page varies per Edition, an EPS file is generated for each Edition.
All EPS files are uploaded along with the document.
Notes:
|
new Feature( 'CreatePagePDF' ),
Creates a PDF for each page of the layout when the layout is saved to the File Store by Smart Connection for InDesign.
When a page varies per Edition, a PDF is generated for each Edition.
All PDFs are uploaded along with the document.
Note: Cannot be used when CreatePageEPS is also enabled.
new Feature( 'CreatePagePDFOnProduce', '[Press Quality]' ),
Creates a PDF for each page of the layout when the layout is saved by Smart Connection for InDesign to a Workflow Status for which the Output option is enabled. See Creating Workflow Statuses in Enterprise Server 10.
When a page varies per Edition, a PDF file is generated for each Edition.
All PDFs are uploaded along with the document.
A value should be specified for this option which should match one of the Adobe PDF Presets, such as '[High Quality Print]'. The default value is '[Press Quality]'.
new Feature( 'CreatePagePreview' ),
Creates a page preview in JPEG format for each page of the layout when the layout is saved to the File Store by Smart Connection for InDesign.
When a page varies per Edition, a preview is generated for each Edition.
All previews are uploaded along with the document.
Note: This option can be combined with the following options:
|
new Feature( 'CreatePagePreview' ),
Creates a preview in JPEG format for each page of the layout when the layout is saved by Smart Connection for InDesign to a Workflow Status for which the Output option is enabled. See Creating Workflow Statuses in Enterprise Server 10.
When a page varies per Edition, a preview is generated for each Edition.
All previews are uploaded along with the document.
This option has no effect when the CreatePagePreview option is enabled.
new Feature( 'PagePreviewQuality', 4),
Controls the quality (compression) of the page previews generated by Smart Connection for InDesign. The previews are used in the Publication Overview Application of Content Station and the Preview panes of Smart Connection and Content Station.
Possible values:
1 low
2 good
3 excellent
4 great (default setting)
Note: Generating the page previews is handled by the options CreatePagePreview and CreatePagePreviewOnProduce.
new Feature( 'PagePreviewResolution', 200)
,
Controls the resolution (DPI) of the page previews generated by Smart Connection for InDesign. The previews are used in the Publication Overview Application of Content Station and the Preview panes of Smart Connection and Content Station.
Note: Generating the page previews is handled by the options CreatePagePreview and CreatePagePreviewOnProduce.
new Feature( 'FullResolutionGraphics')
,
Makes sure that the native images are used when a page preview is generated instead of the default low-resolution proxy images that are stored within the InDesign layout.
Note: Using this option can considerably increase the time that InDesign or InDesign Server need to process layouts.
Step 6. Configuring when the InDesign Server Automation should not be triggered
The scenarios in which Enterprise Server triggers the InDesign Server automation (such as changing the Workflow status of an object or checking-in a layout without changing the Workflow status) can also occur when other systems such as MadeToPrint, Journal Designer, Claro, and Smart Mover interact with Enterprise Server.
However, triggering an InDesign Server Automation job by those systems is typically not desired.
Objects can therefore be prevented from being processed by the InDesign Server Automation feature in one of the following scenarios:
- When an object is assigned to a specific Workflow Status
- When a layout is created or changed by a planning tool
Skipping automation based on Workflow Status
In this scenario the automation is skipped when an object such as a layout or article is assigned to a specific Workflow Status.
This method can be used for the following types of objects:
- Articles 1
- Images 1
- Layouts
- Layout templates2
- Layout Modules
- Layout Module templates2
- Spreadsheets 1
1 Requires Enterprise Server 10.0.1 or higher.
2 Requires Enterprise Server 10.1.7.
Note: This option only appears when the Enterprise Server plug-in named 'InDesign Server Automation' is enabled.
Figure: The 'Skip InDesign Server Automation' option for Workflow statuses.
Setting the Workflow status is done on the Workflow Maintenance page.
Skipping pages created or changed by a planning tool
Info: This feature requires Enterprise Server 10.7.1 or higher.
In this scenario, any layout that is created or changed by a planning tool is ignored by the InDesign Server automation.
Configure this by defining the following option:
- File: config_overrule.php file
- Name of option: IDSA_PLANNED_PAGES_PROCESSING
- Possible values:
- true - An InDesign Server Job is created for the InDesign Server Automation to process pages that are created or changed by the Planning tool.
- false - No InDesign Server Job is created; pages that are created or changed by the Planning tool are not processed by the InDesign Server Automation.
- Default setting: false.
- Example:
define ( 'IDSA_PLANNED_PAGES_PROCESSING', false );
Starting InDesign Server
When starting InDesign Server, make sure to include the 'previews' argument so that previews are generated when images are placed.
Examples:
|
Note: When leaving out this argument, placed images may appear as gray boxes.
Document history
- 12 January 2022: Updated section 'Configuring preview and output generation' by making step 3 for configuring CLIENTFEATURES clearer.
Comment
Do you have corrections or additional information about this article? Leave a comment! Do you have a question about what is described in this article? Please contact Support.
3 comments
On a related note, if you are not using the default [Press Quality] PDF preset but your own PDF preset, say PDF_preset_1, make sure to generate a .joboptions file from InDesign, File | Adobe PDF Presets using Save As and place this PDF_preset_1.joboptions in the correct folder that InDesign Server can access, which is:
On a Mac: <computer> > Library > Application Support > Adobe > Adobe PDF > Settings
On Windows: C:\Users\[USERSNAME]\AppData\roaming\Adobe\Adobe PDF\Settings\
Restart IDS to takle effect. Otherwise InDesign Server could not find PDF_preset_1 and will not be able to do its job
Is it possible to trigger CreatePagePreview when a placed image is checked in without checking in the layout? I think it would be great to have current status in the publication overview while the image editing is working.
This is already happening. If an object that can be placed on a layout ('Image', 'Article', 'Spreadsheet', 'LayoutModule') is checked in, Enterprise Server creates an InDesign Server Automation job for every layout which contains the placed object. This is done to ensure that the layout stays up to date.
There is one exception. In case the status of either the placed object or the layout has the 'Skip InDesign Server Automation' checked no job will be created.
Please sign in to leave a comment.