6 ドキュメント変換プロセッサ・スクリプトの作成

ドキュメント変換プロセッサでは、他のバッチ・プロセッサと同様に、JavaScript (Nashorn)を使用してドキュメント変換ジョブをカスタマイズできます。ここでは、ドキュメント変換プロセッサ・スクリプトの作成方法を学習します。

DocumentConverterContextクラス

DocumentConverterContextクラスには、処理されるジョブに関連するプロパティが含まれます。このクラスのインスタンスは処理の開始前に作成され、処理の様々なステージでドキュメント変換イベントに渡されます。

次の表に、DocumentConverterContextのフィールドを示します。ドキュメント変換イベントが起動されると、対応するDocumentConverterContextフィールドがイベントに公開されます。

プロパティ タイプ 説明
cancel Boolean

このブール値がtrueに設定されている場合、実行される操作が取り消されます。

logger

Logger

追加エントリのログ記録に使用できるjava.util.logging.Loggerのインスタンス。

docConverterJob

DocConverterJob

処理中の現在のドキュメント変換ジョブ。

ble

BatchLockEntity

新しいバッチが作成された後、このプロパティにはバッチのバッチ・ロック・エンティティが含まれます。

activeDocument

DocumentEntity

処理中の現在アクティブなドキュメント。

activeAttachment

DocumentEntity

処理中の現在アクティブな添付。

activePage

DocumentPageEntity

処理中の現在アクティブなページ。

externalProgramPath

String

ドキュメントの変換に使用される外部アプリケーションへの完全修飾パス。

externalProgramCommandLine

String

ドキュメントの変換に使用される外部アプリケーションへの完全修飾パス。

externalProgramSuccessCode

int

正常に変換されたことを示す、外部プログラムから返される値。

externalProgramMonitoringMethod

int

外部プログラムのモニターに使用されるモニター方法。有効な値は、次のとおりです。

0 - プロセス継続時間

1 - 出力ファイル

externalProgramTimeout

int

externalProgramMonitoriingMethodが1 (プロセス継続時間)の場合、この値にはプログラムに許可される実行時間(分)が含まれます。この時間を超えると、プログラムはフォルトやハングが原因でタイムアウトしたとみなされます。この値に達すると、外部プログラムは終了し、例外がスローされます。

externalProgramDestFile

File

外部プログラムによって生成される宛先ファイルを表すFileオブジェクト。Fileオブジェクトを作成してスクリプト内に渡します。

ドキュメント変換プロセッサのイベント

ドキュメント変換プロセッサ・スクリプトは、特定のドキュメント変換プロセッサ・イベントの動作をカスタマイズできるJavaScriptモジュールです。

Initialize

Initializeイベントは、ドキュメント変換プロセッサ・ジョブが初期化フェーズにあることを通知します。initializeメソッドは、ジョブの開始時に呼び出されます。ジョブ全体のDocumentConversionContextインスタンスはこの時点で初期化されて、メソッドに渡されます。実装者は、このメソッドを使用して、データベース接続の作成や一時パスの作成などの初期化タスクを実行できます。

構文 パラメータ

public initialize(DocumentConverterContext ctx);

DocumentConverterContext ctx

preProcessBatch

preProcessBatchイベントは、新しいバッチが処理される前に発生します。

構文 パラメータ

public preProcessBatch(DocumentConverterContext ctx);

DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

  • cancel: trueに設定すると、バッチは処理されません。

  • ble: この時点で、このプロパティは初期化されます。

postProcessBatch

postProcessBatchイベントは、ドキュメント変換プロセスの完了後に発生します。実装者は、データベース接続を閉じることも、一時ファイルおよびディレクトリをクリーン・アップすることもできます。

構文 パラメータ

public postProcessBatch(DocumentConverterContext ctx);

DocumentConverterContext ctx

preProcessDocument

preProcessDocumentイベントは、バッチの一部であるドキュメントが変換ジョブに対してアクティブになっているときに発生します。複数のドキュメントがある場合、このイベントはドキュメントごとに通知されます。

構文 パラメータ

public preProcessDocument(DocumentConverterContext ctx);

DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

  • cancel: trueに設定すると、ドキュメントは処理されません。

  • ble: 関連付けられているBatchLockEntityへの参照。

  • activeDocument: 処理される直前のドキュメントへの参照。

postProcessDocument

postProcessDocumentイベントは、バッチの一部であるドキュメントが変換ジョブを完了した後に発生します。複数のドキュメントがある場合、このイベントはドキュメントごとに通知されます。

構文 パラメータ

public postProcessDocument(DocumentConverterContext ctx);

DocumentConverterContext ctx

preProcessAttachment

preProcessAttachmentイベントは、バッチの一部である添付が変換ジョブに対してアクティブになっているときに発生します。複数の添付がある場合、このイベントは添付ごとに通知されます。

構文 パラメータ

public preProcessAttachment(DocumentConverterContext ctx);

DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

  • cancel: trueに設定すると、添付は処理されません。

  • ble: 関連付けられているBatchLockEntityへの参照。

  • activeAttachment: 処理される直前の添付への参照。

postProcessAttachment

postProcessAttachmentイベントは、バッチの一部である添付が変換ジョブを完了した後に発生します。複数の添付がある場合、このイベントは添付ごとに通知されます。

構文 パラメータ

public postProcessAttachment(DocumentConverterContext ctx);

DocumentConverterContext ctx

preProcessPage

preProcessPageイベントは、バッチまたはドキュメントの一部であるページが変換ジョブに送信される直前に発生します。複数のページがある場合、このイベントはページごとに通知されます。

構文 パラメータ

public preProcessPage(DocumentConverterContext ctx);

DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

  • cancel: trueに設定すると、ページは処理されません。

  • ble: 関連付けられているBatchLockEntityへの参照。

  • activeAttachment: 処理される直前のページへの参照。

postProcessPage

postProcessPageイベントは、バッチまたはドキュメントの一部であるページが変換ジョブを完了した後に発生します。複数のページがある場合、このイベントはページごとに通知されます。

構文 パラメータ

public postProcessPage(DocumentConverterContext ctx);

DocumentConverterContext ctx

preInvokeExternalProcess

preInvokeExternalProcessメソッドは、外部変換プログラムが起動される直前に呼び出されます。

構文 パラメータ

public preInvokeExternalProcess(DocumentConverterContext ctx);

DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

  • cancel: trueに設定すると、ページは処理されません。

  • ble: 関連付けられているBatchLockEntityへの参照。

  • externalProgramPath: 実行する外部プログラムのパス。

  • externalProgramCommandLine: 外部プログラムに渡すコマンドライン。

  • externalProgramSuccessCode: 外部プログラムの終了時に正常に実行されたことを表す整数値。

  • externalProgramMonitoringMethod: 外部プログラムのハングをモニターするために使用されるメソッド。

  • externalProgramTimeout: プログラムの終了までに外部プログラムに許可される実行時間(分)。

  • externalProgramDestFile: 外部プログラムによって生成される出力ファイル。このFileオブジェクトを作成してスクリプト内に渡します。

postInvokeExternalProcess

postInvokeExternalProcessメソッドは、外部変換プログラムの完了直後に呼び出されます。

構文 パラメータ

public postInvokeExternalProcess(DocumentConverterContext ctx);

DocumentConverterContext ctx

ドキュメント変換プロセッサ・スクリプトのサンプル

ドキュメント変換プロセッサ・スクリプトのサンプル1

次のスクリプトでは、バッチが変換されたときにすべてのイベントを出力します:

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

ドキュメント変換プロセッサ・スクリプトのサンプル2

次のスクリプトは、preProcessBatchイベントでの操作を取り消します:

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

ドキュメント変換プロセッサ・スクリプトのサンプル3

次のスクリプトは、preProcessDocumentイベントのバッチ名を変更します:

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