6 Creating Document Conversion Processor Scripts
Similar to other batch processors, the Document Conversion Processor allows customization of document conversion jobs using JavaScript (Nashorn). Here you learn how to create Document Conversion Processor scripts.
6.1 DocumentConverterContext Class
The DocumentConverterContext class contains properties relevant to the job being processed. An instance of this class is created before processing starts, and this instance is passed on to document conversion events at various stages of processing.
The following table lists the DocumentConverterContext fields. When a document conversion event is invoked, the corresponding DocumentConverterContext field is exposed to the event.
Property | Type | Description |
---|---|---|
cancel | Boolean |
When the boolean value is set to true, it will cancel the operation being performed. |
logger |
Logger |
An instance of |
docConverterJob |
DocConverterJob |
The current document conversion job being processed. |
ble |
BatchLockEntity |
After a new batch is created, this property contains the Batch Lock entity for the batch. |
activeDocument |
DocumentEntity |
The current active document being processed. |
activeAttachment |
DocumentEntity |
The current active attachment being processed. |
activePage |
DocumentPageEntity |
The current active page being processed. |
externalProgramPath |
String |
The fully-qualified path to an external application that will be used to convert documents. |
externalProgramCommandLine |
String |
The fully-qualified path to an external application that will be used to convert documents. |
externalProgramSuccessCode |
int |
The value returned from an external program that indicates a successful conversion. |
externalProgramMonitoringMethod |
int |
The monitoring method used to monitor the external program. The valid values are: 0 - Process duration 1 - Output file |
externalProgramTimeout |
int |
When |
externalProgramDestFile |
File |
A File object representing the destination file that the external program will generate. Create and pass a File object in the script. |
6.2 Document Conversion Processor Events
Document Conversion Processor scripts are JavaScript modules that enable you to customize the behavior of certain Document Conversion Processor events.
6.2.1 Initialize
The Initialize event signals that the document conversion processor job is in the initialization phase. The initialize
method is invoked when the job starts. The DocumentConversionContext
instance for the entire job is initialized at this point and passed into the method. An implementer can use this method to perform initialization tasks, such as creating database connections or creating temporary paths.
Syntax | Parameter |
---|---|
|
6.2.2 preProcessBatch
The preProcessBatch event occurs before a new batch is processed.
Syntax | Parameter |
---|---|
|
Associated DocumentConversionContext Properties
-
cancel: If set to true, the batch is not processed.
-
ble: At this point, this property will be initialized.
6.2.3 postProcessBatch
The postProcessBatch event occurs after the document conversion process is complete. An implementer can close database connections as well as cleanup temporary files and directories.
Syntax | Parameter |
---|---|
|
6.2.4 preProcessDocument
The preProcessDocument event occurs when the document, which is a part of the batch, is active for the conversion job. If there are multiple documents, this event is signaled for each document.
Syntax | Parameter |
---|---|
|
Associated DocumentConversionContext Properties
-
cancel: If set to true, the document is not processed.
-
ble: A reference to the associated BatchLockEntity.
-
activeDocument: A reference to the document that is about to be processed.
6.2.5 postProcessDocument
The postProcessDocument event occurs after the document, which is a part of the batch, has completed the conversion job. If there are multiple documents, this event is signaled for each document.
Syntax | Parameter |
---|---|
|
6.2.6 preProcessAttachment
The preProcessAttachment event occurs when the attachment, which is a part of the batch, is active for the conversion job. If there are multiple attachments, this event is signaled for each attachment.
Syntax | Parameter |
---|---|
|
Associated DocumentConversionContext Properties
-
cancel: If set to true, the attachment is not processed.
-
ble: A reference to the associated BatchLockEntity.
-
activeAttachment: A reference to the attachment that is about to be processed.
6.2.7 postProcessAttachment
The postProcessAttachment event occurs after the attachment, which is a part of the batch, has completed the conversion job. If there are multiple attachments, this event is signaled for each attachment.
Syntax | Parameter |
---|---|
|
6.2.8 preProcessPage
The preProcessPage event occurs when the page, which is a part of the batch or document, is about to be sent to a conversion job. If there are multiple pages, this event is signaled for each page.
Syntax | Parameter |
---|---|
|
Associated DocumentConversionContext Properties
-
cancel: If set to true, the page is not processed.
-
ble: A reference to the associated BatchLockEntity.
-
activeAttachment: A reference to the page that is about to be processed.
6.2.9 postProcessPage
The postProcessPage event occurs after the page, which is a part of the batch or document, has completed the conversion job. If there are multiple pages, this event is signaled for each page.
Syntax | Parameter |
---|---|
|
6.2.10 preInvokeExternalProcess
The preInvokeExternalProcess method is invoked right before an external conversion program is invoked.
Syntax | Parameter |
---|---|
|
Associated DocumentConversionContext Properties
-
cancel: If set to true, the page is not processed.
-
ble: A reference to the associated BatchLockEntity.
-
externalProgramPath: The path to the external program to execute.
-
externalProgramCommandLine: The command line to pass to the external program.
-
externalProgramSuccessCode: The integer value that represents a successful run when the external program terminates.
-
externalProgramMonitoringMethod: The method used to monitor the external program for hangs.
-
externalProgramTimeout: The duration in minutes that the external program is allowed to run before the program is terminated.
-
externalProgramDestFile: The output file to be generated by the external program; create and pass this File object in the script.
6.3 Sample Document Conversion Processor Scripts
6.3.1 Sample Document Conversion Processor Script 1
The following script prints all events when a batch goes through conversion:
//doc conversion job script to print at the specific events function initialize(event) { java.lang.System.out.println("initialize"); } function preProcessBatch(event){ java.lang.System.out.println("In preProcessBatch"); java.lang.System.out.println("Batch name preProcessBatch: "+event.getBle().getBatch().getBatchName()); } function postProcessBatch(event){ java.lang.System.out.println("In postProcessBatch"); java.lang.System.out.println("Batch name postProcessBatch: "+event.getBle().getBatch().getBatchName()); } function preProcessDocument(event){ java.lang.System.out.println("In preProcessDocument"); java.lang.System.out.println("Title name preProcessDocument: "+event.getActiveDocument().getDocumentTitle()); } function postProcessDocument(event){ java.lang.System.out.println("In postProcessDocument"); } function preProcessAttachment(event){ java.lang.System.out.println("In preProcessAttachment"); java.lang.System.out.println("Attachment name: "+event.getActiveAttachment().getDocumentTitle()); } function postProcessAttachment(event){ java.lang.System.out.println("In postProcessAttachment"); } function preProcessPage(event){ java.lang.System.out.println("In preProcessPage"); java.lang.System.out.println("Page name: "+event.getActivePage().getDocumentEntity().getDocumentTitle()); } function postProcessPage(event){ java.lang.System.out.println("In postProcessPage"); } function preInvokeExternalProcess(event){ java.lang.System.out.println("In preInvokeExternalProcess"); } function postInvokeExternalProcess(event){ java.lang.System.out.println("In postInvokeExternalProcess"); }
6.3.2 Sample Document Conversion Processor Script 2
The following script cancels operation at the preProcessBatch event:
function initialize(event) { java.lang.System.out.println("initialize"); } function preProcessBatch(event){ var isCancel = true; event.setCancel(isCancel); java.lang.System.out.println("preProcessBatch and about to cancel operation."); java.lang.System.out.println("Batch name preProcessBatch: "+event.getBle().getBatch().getBatchName()); } function postProcessBatch(event){ java.lang.System.out.println("postProcessBatch - this line will not be printed."); java.lang.System.out.println("Batch name postProcessBatch: "+event.getBle().getBatch().getBatchName()); }
6.3.3 Sample Document Conversion Processor Script 3
The following script changes the batch name in the preProcessDocument event:
function preProcessDocument(event){ java.lang.System.out.println("preProcessDocument batch-"+event.getBle().getBatch().getBatchName()); event.getBle().getBatch().setBatchName("BatchInPreDocumentConv"); } function postProcessDocument(event){ java.lang.System.out.println("postProcessDocument batch-"+event.getBle().getBatch().getBatchName()); }