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プロパティ

postProcessBatch

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

構文 パラメータ
public postProcessBatch(DocumentConverterContext ctx); DocumentConverterContext ctx

preProcessDocument

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

構文 パラメータ
public preProcessDocument(DocumentConverterContext ctx); DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

postProcessDocument

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

構文 パラメータ
public postProcessDocument(DocumentConverterContext ctx); DocumentConverterContext ctx

preProcessAttachment

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

構文 パラメータ
public preProcessAttachment(DocumentConverterContext ctx); DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

postProcessAttachment

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

構文 パラメータ
public postProcessAttachment(DocumentConverterContext ctx); DocumentConverterContext ctx

preProcessPage

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

構文 パラメータ
public preProcessPage(DocumentConverterContext ctx); DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

postProcessPage

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

構文 パラメータ
public postProcessPage(DocumentConverterContext ctx); DocumentConverterContext ctx

preInvokeExternalProcess

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

構文 パラメータ
public preInvokeExternalProcess(DocumentConverterContext ctx); DocumentConverterContext ctx

関連するDocumentConversionContextプロパティ

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