Content for a publication is generated by various team members using different applications: Studio, and Studio for InDesign 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 Studio Server. Especially for users of InCopy and Studio 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.
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 Studio Server 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).
- Previews and PDF files should be produced or updated on every applicable status update. If InDesign Server is not used, updates are only done when layouts are created or saved by the InDesign client.
- Previews and PDF files should be produced or updated when an article or image that is placed on the layout is updated. If InDesign Server is not used, updates are only done when layouts are created or saved by the InDesign client.
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
Info: Performing the described steps requires direct server access. Depending upon how your system is hosted and the level of access you have to that system, coordination may be required with your Partner or WoodWing Support team. For a full overview of the steps that need to be done by WoodWing and how to request them, see WoodWing Cloud - Change management.
To make use of the InDesign Server Automation feature, perform the following steps.
- Enable the Studio 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 Studio Server plug-in
The feature is provided by an Studio Server plug-in named InDesign Server Automation which is shipped with Studio Server. Enable this plug-in on the Server Plug-in page in Studio Server by clicking its icon.
Access this page by doing the following:
In Studio 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 Studio Server. See Configuring the Studio Server instance for InDesign Server to log in to.
Step 3. Installing a Scheduler
Step 1. Make sure that cURL is installed.
macOS / LinuxcURL is pre-installed on these platforms; no further action is needed. |
WindowsStep 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. CronniX can be downloaded from https://code.google.com/archive/p/cronnix/.
Note: Alternatively, you can skip the CronniX installation and use Crontab directly, but then please 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
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. |
Steps for macOS 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 |
Steps for Linux 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:
# min hour mday month wday command * * * * * curl "http://127.0.0.1/StudioServer/idsjobindex.php?maxexectime=60" Step 3. Press Shift+Z twice to exit and save changes. The saved changes are directly effective in Crontab. |
Steps for Windows 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 Studio Server - 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:
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/StudioServer/idsjobindex.php?maxexectime=60" Step 14. Access the Settings tab and do the following:
|
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 Studio Server.
- A layout is saved to Studio Server 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 Studio Server.
Step 1. Open the configserver.php file (recommended: config_overrule.php file) for your Studio Server installation.
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:
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. |
|
CreatePageEPSOnProduce
Creates an EPS file for each page of the layout when the layout is saved by Studio for InDesign to a Workflow Status for which the Output option is enabled. See Creating Workflow Statuses in Studio Server. When a page varies per Edition, an EPS file is generated for each Edition. All EPS files are uploaded along with the document.
|
|
CreatePagePDF
Creates a PDF for each page of the layout when the layout is saved to the File Store by Studio for InDesign. When a page varies per Edition, a PDF is generated for each Edition. Note: Cannot be used when CreatePageEPS is also enabled. |
|
CreatePagePDFOnProduce
Creates a PDF for each page of the layout when the layout is saved by Studio for InDesign to a Workflow Status for which the Output option is enabled. See Creating Workflow Statuses in Studio Server. When a page varies per Edition, a PDF file is generated for each Edition. 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]'. |
|
CreatePagePreview
Creates a page preview in JPEG format for each page of the layout when the layout is saved to the File Store by Studio for InDesign. When a page varies per Edition, a preview is generated for each Edition. All previews are uploaded along with the document.
|
|
CreatePagePreviewOnProduce
Creates a preview in JPEG format for each page of the layout when the layout is saved by Studio for InDesign to a Workflow Status for which the Output option is enabled. See Creating Workflow Statuses in Studio Server. 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. |
|
PagePreviewQuality
Controls the quality (compression) of the page previews generated by Studio for InDesign. The previews are used in the Publication Overview Application of Studio and the Preview panes of Studio and Studio. 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. |
|
PagePreviewResolution
Controls the resolution (DPI) of the page previews generated by Studio for InDesign. The previews are used in the Publication Overview Application of Studio and the Preview panes of Studio for InDesign and InCopy, and Studio. Note: Generating the page previews is handled by the options CreatePagePreview and CreatePagePreviewOnProduce. |
|
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 Studio 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 Studio 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
- Images
- Layouts
- Layout templates
- Layout Modules
- Layout Module templates
- Spreadsheets
Note: This option only appears when the Studio 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
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.php file (recommended: 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.
Revisions
- 21 October 2024: Updated section 'When to offload?' by adding 2 bullets about offloading previews and PDF files.
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.
0 comments
Please sign in to leave a comment.