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.

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 java.util.logging.Logger that can be used to log additional entries.

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 externalProgramMonitoriingMethod is 1 (Process duration), this value contains the number of minutes to allow the program to run before the program is considered to have timed-out due to a fault or hang.  When this value is reached, the external program is terminated and an exception is thrown.

externalProgramDestFile

File

A File object representing the destination file that the external program will generate. Create and pass a File object in the script.

Document Conversion Processor Events

Document Conversion Processor scripts are JavaScript modules that enable you to customize the behavior of certain Document Conversion Processor events.

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

public initialize(DocumentConverterContext ctx);

DocumentConverterContext ctx

preProcessBatch

The preProcessBatch event occurs before a new batch is processed.

Syntax Parameter

public preProcessBatch(DocumentConverterContext ctx);

DocumentConverterContext ctx

Associated DocumentConversionContext Properties

  • cancel: If set to true, the batch is not processed.

  • ble: At this point, this property will be initialized.

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

public postProcessBatch(DocumentConverterContext ctx);

DocumentConverterContext ctx

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

public preProcessDocument(DocumentConverterContext ctx);

DocumentConverterContext ctx

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.

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

public postProcessDocument(DocumentConverterContext ctx);

DocumentConverterContext ctx

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

public preProcessAttachment(DocumentConverterContext ctx);

DocumentConverterContext ctx

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.

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

public postProcessAttachment(DocumentConverterContext ctx);

DocumentConverterContext ctx

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

public preProcessPage(DocumentConverterContext ctx);

DocumentConverterContext ctx

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.

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

public postProcessPage(DocumentConverterContext ctx);

DocumentConverterContext ctx

preInvokeExternalProcess

The preInvokeExternalProcess method is invoked right before an external conversion program is invoked.

Syntax Parameter

public preInvokeExternalProcess(DocumentConverterContext ctx);

DocumentConverterContext ctx

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.

postInvokeExternalProcess

The postInvokeExternalProcess method is invoked soon after an external conversion program is completed.

Syntax Parameter

public postInvokeExternalProcess(DocumentConverterContext ctx);

DocumentConverterContext ctx

Sample Document Conversion Processor Scripts

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");
}

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());
}

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());
}