6 ドキュメント変換プロセッサ・スクリプトの作成
ドキュメント変換プロセッサでは、他のバッチ・プロセッサと同様に、JavaScript (Nashorn)を使用してドキュメント変換ジョブをカスタマイズできます。ここでは、ドキュメント変換プロセッサ・スクリプトの作成方法を学習します。
DocumentConverterContextクラス
DocumentConverterContextクラスには、処理されるジョブに関連するプロパティが含まれます。このクラスのインスタンスは処理の開始前に作成され、処理の様々なステージでドキュメント変換イベントに渡されます。
次の表に、DocumentConverterContextのフィールドを示します。ドキュメント変換イベントが起動されると、対応するDocumentConverterContextフィールドがイベントに公開されます。
プロパティ | タイプ | 説明 |
---|---|---|
cancel | Boolean |
このブール値がtrueに設定されている場合、実行される操作が取り消されます。 |
logger |
Logger |
追加エントリのログ記録に使用できる |
docConverterJob |
DocConverterJob |
処理中の現在のドキュメント変換ジョブ。 |
ble |
BatchLockEntity |
新しいバッチが作成された後、このプロパティにはバッチのバッチ・ロック・エンティティが含まれます。 |
activeDocument |
DocumentEntity |
処理中の現在アクティブなドキュメント。 |
activeAttachment |
DocumentEntity |
処理中の現在アクティブな添付。 |
activePage |
DocumentPageEntity |
処理中の現在アクティブなページ。 |
externalProgramPath |
String |
ドキュメントの変換に使用される外部アプリケーションへの完全修飾パス。 |
externalProgramCommandLine |
String |
ドキュメントの変換に使用される外部アプリケーションへの完全修飾パス。 |
externalProgramSuccessCode |
int |
正常に変換されたことを示す、外部プログラムから返される値。 |
externalProgramMonitoringMethod |
int |
外部プログラムのモニターに使用されるモニター方法。有効な値は、次のとおりです。 0 - プロセス継続時間 1 - 出力ファイル |
externalProgramTimeout |
int |
|
externalProgramDestFile |
File |
外部プログラムによって生成される宛先ファイルを表すFileオブジェクト。Fileオブジェクトを作成してスクリプト内に渡します。 |
ドキュメント変換プロセッサのイベント
ドキュメント変換プロセッサ・スクリプトは、特定のドキュメント変換プロセッサ・イベントの動作をカスタマイズできるJavaScriptモジュールです。
Initialize
Initializeイベントは、ドキュメント変換プロセッサ・ジョブが初期化フェーズにあることを通知します。initialize
メソッドは、ジョブの開始時に呼び出されます。ジョブ全体のDocumentConversionContext
インスタンスはこの時点で初期化されて、メソッドに渡されます。実装者は、このメソッドを使用して、データベース接続の作成や一時パスの作成などの初期化タスクを実行できます。
構文 | パラメータ |
---|---|
|
preProcessBatch
preProcessBatchイベントは、新しいバッチが処理される前に発生します。
構文 | パラメータ |
---|---|
|
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、バッチは処理されません。
-
ble: この時点で、このプロパティは初期化されます。
postProcessBatch
postProcessBatchイベントは、ドキュメント変換プロセスの完了後に発生します。実装者は、データベース接続を閉じることも、一時ファイルおよびディレクトリをクリーン・アップすることもできます。
構文 | パラメータ |
---|---|
|
preProcessDocument
preProcessDocumentイベントは、バッチの一部であるドキュメントが変換ジョブに対してアクティブになっているときに発生します。複数のドキュメントがある場合、このイベントはドキュメントごとに通知されます。
構文 | パラメータ |
---|---|
|
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、ドキュメントは処理されません。
-
ble: 関連付けられているBatchLockEntityへの参照。
-
activeDocument: 処理される直前のドキュメントへの参照。
postProcessDocument
postProcessDocumentイベントは、バッチの一部であるドキュメントが変換ジョブを完了した後に発生します。複数のドキュメントがある場合、このイベントはドキュメントごとに通知されます。
構文 | パラメータ |
---|---|
|
preProcessAttachment
preProcessAttachmentイベントは、バッチの一部である添付が変換ジョブに対してアクティブになっているときに発生します。複数の添付がある場合、このイベントは添付ごとに通知されます。
構文 | パラメータ |
---|---|
|
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、添付は処理されません。
-
ble: 関連付けられているBatchLockEntityへの参照。
-
activeAttachment: 処理される直前の添付への参照。
postProcessAttachment
postProcessAttachmentイベントは、バッチの一部である添付が変換ジョブを完了した後に発生します。複数の添付がある場合、このイベントは添付ごとに通知されます。
構文 | パラメータ |
---|---|
|
preProcessPage
preProcessPageイベントは、バッチまたはドキュメントの一部であるページが変換ジョブに送信される直前に発生します。複数のページがある場合、このイベントはページごとに通知されます。
構文 | パラメータ |
---|---|
|
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、ページは処理されません。
-
ble: 関連付けられているBatchLockEntityへの参照。
-
activeAttachment: 処理される直前のページへの参照。
postProcessPage
postProcessPageイベントは、バッチまたはドキュメントの一部であるページが変換ジョブを完了した後に発生します。複数のページがある場合、このイベントはページごとに通知されます。
構文 | パラメータ |
---|---|
|
preInvokeExternalProcess
preInvokeExternalProcessメソッドは、外部変換プログラムが起動される直前に呼び出されます。
構文 | パラメータ |
---|---|
|
関連するDocumentConversionContextプロパティ
-
cancel: trueに設定すると、ページは処理されません。
-
ble: 関連付けられているBatchLockEntityへの参照。
-
externalProgramPath: 実行する外部プログラムのパス。
-
externalProgramCommandLine: 外部プログラムに渡すコマンドライン。
-
externalProgramSuccessCode: 外部プログラムの終了時に正常に実行されたことを表す整数値。
-
externalProgramMonitoringMethod: 外部プログラムのハングをモニターするために使用されるメソッド。
-
externalProgramTimeout: プログラムの終了までに外部プログラムに許可される実行時間(分)。
-
externalProgramDestFile: 外部プログラムによって生成される出力ファイル。このFileオブジェクトを作成してスクリプト内に渡します。
ドキュメント変換プロセッサ・スクリプトのサンプル
ドキュメント変換プロセッサ・スクリプトのサンプル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()); }