手順の概要
複数の XDP フラグメントをアセンブルするには、次のタスクを実行します。
- プロジェクトファイルを含めます。
- PDF Assembler クライアントを作成します。
- 既存の DDX ドキュメントを参照します。
- XDP ドキュメントを参照します。
- 実行時オプションを設定します。
- 複数の XDP ドキュメントをアセンブリします。
- アセンブルされた XDP ドキュメントを取得します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-assembler-client.jar
- adobe-utilities.jar(AEM Forms が JBoss にデプロイされている場合に必要)
- jbossall-client.jar(AEM Formsが JBoss にデプロイされている場合に必要)
PDF Assembler クライアントの作成
Assembler 操作をプログラムで実行する前に、Assembler サービスクライアントを作成します。
既存の DDX ドキュメントの参照
複数の XDP ドキュメントをアセンブルするには、DDX ドキュメントを参照する必要があります。この DDX ドキュメントには、XDP result
、XDP source
、XDPContent
要素を含める必要があります。
XDP ドキュメントの参照
複数の XDP ドキュメントをアセンブルするには、結果の XDP ドキュメントをアセンブルするために使用されるすべての XDP ファイルを参照します。source
属性によって参照される XDP ドキュメントに含まれるサブフォームの名前が、fragment
属性で指定されていることを確認してください。サブフォームは Designer で定義されます。例えば、次のような XML を考えてみましょう。
<XDPContent insertionPoint="ddx_fragment" source="tuc018_contact.xdp" fragment="subPatientContact" required="false"/>
subPatientContact という名前のサブフォームは、tuc018_contact.xdp という名前の XDP ファイル内にある必要があります。
実行時オプションの設定
ジョブを実行する際の Assembler サービスの動作を制御する実行時オプションを設定できます。例えば、エラーが発生した場合にジョブの処理を続行するよう Assembler サービスに指示するオプションを設定できます。
複数の XDP ドキュメントのアセンブリ
複数の XDP ファイルをアセンブリするには、 invokeDDX
操作を呼び出します。Assembler サービスは、コレクションオブジェクト内でアセンブルされた XDP ドキュメントを返します。
アセンブルされた XDP ドキュメントの取得
アセンブルされた XDP ドキュメントがコレクションオブジェクト内で返されます。コレクションオブジェクトを繰り返し処理し、XDP ドキュメントを XDP ファイルとして保存します。また、XDP ドキュメントを別の AEM Forms サービス(Output など)に渡すこともできます。
関連トピック
Java API を使用した複数の XDP フラグメントのアセンブル
Java API を使用した複数の XDP フラグメントのアセンブル
Assembler Service API(Java)を使用して、複数の XDP フラグメントをアセンブルします。
-
プロジェクトファイルを含めます。
adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
PDF Assembler クライアントを作成します。
- 接続プロパティを含む
ServiceClientFactory
オブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactory
オブジェクトを渡すことにより、AssemblerServiceClient
オブジェクトを作成します。
- 接続プロパティを含む
-
既存の DDX ドキュメントを参照します。
- コンストラクタを使用し、DDX ファイルの場所を指定する文字列値を渡すことによって、その DDX ドキュメントを表す
java.io.FileInputStream
オブジェクトを作成します。 - コンストラクターを使用して
java.io.FileInputStream
オブジェクトを渡すことによって、com.adobe.idp.Document
オブジェクトを作成します。
- コンストラクタを使用し、DDX ファイルの場所を指定する文字列値を渡すことによって、その DDX ドキュメントを表す
-
XDP ドキュメントを参照します。
-
HashMap
コンストラクターを使用することで、入力 XDP ドキュメントを格納するために使用されるjava.util.Map
オブジェクトを作成します。 -
com.adobe.idp.Document
オブジェクトを作成して、入力 XDP ファイルを含むjava.io.FileInputStream
オブジェクトを渡します(XDP ファイルごとにこのタスクを繰り返します)。 -
put
メソッドを呼び出して次の引数を渡すことで、エントリをjava.util.Map
オブジェクトに追加します。- キー名を表す文字列値。この値は、DDX ドキュメントで指定された
source
要素値に一致する必要があります(XDP ファイルごとにこのタスクを繰り返します)。 source
要素に対応する XDP ドキュメントを含むcom.adobe.idp.Document
オブジェクト(XDP ファイルごとにこのタスクを繰り返します)。
- キー名を表す文字列値。この値は、DDX ドキュメントで指定された
-
-
実行時オプションを設定します。
- コンストラクターを使用して、実行時オプションを格納する
AssemblerOptionSpec
オブジェクトを作成します。 AssemblerOptionSpec
オブジェクトに属するメソッドを呼び出して、ビジネス要件を満たすよう実行時オプションを設定します。例えば、エラーが発生したときにジョブの処理を続行するように Assembler サービスに指示するには、AssemblerOptionSpec
オブジェクトのsetFailOnError
メソッドを呼び出してfalse
を渡します。
- コンストラクターを使用して、実行時オプションを格納する
-
複数の XDP ドキュメントをアセンブリします。
AssemblerServiceClient
オブジェクトのinvokeDDX
メソッドを呼び出して、以下の必須値を渡します。- 使用する DDX ドキュメントを表す
com.adobe.idp.Document
オブジェクト - 入力 XDP ファイルを格納する
java.util.Map
オブジェクト - デフォルトのフォントやジョブのログレベルを含む、実行時のオプションを指定する
com.adobe.livecycle.assembler.client.AssemblerOptionSpec
オブジェクト
invokeDDX
メソッドは、作成された XDP ドキュメントを格納するcom.adobe.livecycle.assembler.client.AssemblerResult
オブジェクトを返します。 - 使用する DDX ドキュメントを表す
-
アセンブルされた XDP ドキュメントを取得します。
作成された XDP ドキュメントを取得するには、以下の操作を実行します。
AssemblerResult
オブジェクトのgetDocuments
メソッドを呼び出します。このメソッドは、java.util.Map
オブジェクトを返します。- 結果の
com.adobe.idp.Document
オブジェクトが見つかるまで、java.util.Map
オブジェクトを反復処理します。 com.adobe.idp.Document
オブジェクトのcopyToFile
メソッドを呼び出して、作成された XDP ドキュメントを抽出します。
Web サービス API を使用した複数の XDP フラグメントのアセンブル
Assembler Service API(web サービス)を使用して、複数の XDP フラグメントを作成します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。サービス参照を設定する際は、以下の WSDL 定義を必ず使用してください。
https://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1.
NOTE
localhost
を、AEM Forms をホストするサーバーの IP アドレスに置換します。 -
PDF Assembler クライアントを作成します。
-
デフォルトのコンストラクターを使用して、
AssemblerServiceClient
オブジェクトを作成します。 -
System.ServiceModel.EndpointAddress
コンストラクターを使用してAssemblerServiceClient.Endpoint.Address
オブジェクトを作成します。WSDL を指定する文字列値(例:https://localhost:8080/soap/services/AssemblerService?blob=mtom
)を AEM Forms サービスに渡します。lc_version
属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
AssemblerServiceClient.Endpoint.Binding
フィールドの値を取得してSystem.ServiceModel.BasicHttpBinding
オブジェクトを作成します。戻り値をBasicHttpBinding
にキャストします。 -
System.ServiceModel.BasicHttpBinding
オブジェクトのMessageEncoding
フィールドをWSMessageEncoding.Mtom
に設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
AssemblerServiceClient.ClientCredentials.UserName.UserName
フィールドに AEM Forms のユーザー名を割り当てます。AssemblerServiceClient.ClientCredentials.UserName.Password
フィールドに対応するパスワード値を割り当てます。BasicHttpBindingSecurity.Transport.ClientCredentialType
フィールドにHttpClientCredentialType.Basic
定数値を割り当てます。BasicHttpBindingSecurity.Security.Mode
フィールドにBasicHttpSecurityMode.TransportCredentialOnly
定数値を割り当てます。
-
-
既存の DDX ドキュメントを参照します。
- コンストラクターを使用して
BLOB
オブジェクトを作成します。BLOB
オブジェクトは、DDX ドキュメントを格納するために使用されます。 - コンストラクターを呼び出し、DDX ドキュメントのファイルの場所とファイルを開くモードを表す文字列値を渡すことによって、
System.IO.FileStream
オブジェクトを作成します。 System.IO.FileStream
オブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStream
オブジェクトのLength
プロパティを取得することでバイト配列のサイズを決定することができます。System.IO.FileStream
オブジェクトのRead
メソッドを呼び出して、バイト配列にストリームデータを入力します。読み取り対象のバイト配列、開始位置、ストリーム長を渡します。MTOM
プロパティにバイト配列の内容を割り当てて、BLOB
オブジェクトに入力します。
- コンストラクターを使用して
-
XDP ドキュメントを参照します。
- 入力 XDP ファイルごとに、コンストラクタ―を使用して
BLOB
オブジェクトを作成します。このBLOB
オブジェクトは、入力ファイルを格納するために使用されます。 - コンストラクターを呼び出し、入力ファイルのファイルの場所とファイルを開くモードを表す文字列値を渡すことによって、
System.IO.FileStream
オブジェクトを作成します。 System.IO.FileStream
オブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStream
オブジェクトのLength
プロパティを取得することでバイト配列のサイズを決定することができます。System.IO.FileStream
オブジェクトのRead
メソッドを呼び出して、バイト配列にストリームデータを入力します。読み取り対象のバイト配列、開始位置、ストリーム長を渡します。MTOM
フィールドにバイト配列の内容を割り当てて、BLOB
オブジェクトにデータを入力します。MyMapOf_xsd_string_To_xsd_anyType
オブジェクトを作成します。このコレクションオブジェクトは、XDP ドキュメントの作成に必要な入力ファイルを格納するために使用されます。- 入力ファイルごとに、
MyMapOf_xsd_string_To_xsd_anyType_Item
オブジェクトを作成します。 MyMapOf_xsd_string_To_xsd_anyType_Item
オブジェクトのkey
フィールドにキー名を表す文字列値を入力します。この値は、DDX ドキュメントで指定された要素の値と一致する必要があります(このタスクは入力 XDP ファイルごとに実行します)。- 入力ファイルを格納する
BLOB
オブジェクトをMyMapOf_xsd_string_To_xsd_anyType_Item
オブジェクトのvalue
フィールドに割り当てます(このタスクは入力 XDP ファイルごとに実行します)。 MyMapOf_xsd_string_To_xsd_anyType_Item
オブジェクトをMyMapOf_xsd_string_To_xsd_anyType
オブジェクトに追加します。MyMapOf_xsd_string_To_xsd_anyType
オブジェクトのAdd
メソッドを呼び出し、MyMapOf_xsd_string_To_xsd_anyType
オブジェクトを渡します(このタスクは入力 XDP ドキュメントごとに実行します)。
- 入力 XDP ファイルごとに、コンストラクタ―を使用して
-
実行時オプションを設定します。
- ランタイムオプションを格納する
AssemblerOptionSpec
オブジェクトをコンストラクタで作成します。 AssemblerOptionSpec
オブジェクトに属するデータメンバーに値を割り当てることで、ビジネス要件に応じたランタイムオプションを設定します。例えば、エラーが発生した場合にジョブの処理を続行するように Assembler サービスに指示するには、false
をAssemblerOptionSpec
オブジェクトのfailOnError
データメンバーに割り当てます。
- ランタイムオプションを格納する
-
複数の XDP ドキュメントをアセンブリします。
AssemblerServiceClient
オブジェクトのinvokeDDX
メソッドを呼び出して、以下の値を渡します。- DDX ドキュメントを表す
BLOB
オブジェクト - 必要なファイルを含む
MyMapOf_xsd_string_To_xsd_anyType
オブジェクト - 実行時オプションを指定する
AssemblerOptionSpec
オブジェクト
invokeDDX
メソッドは、ジョブの結果と例外(発生した場合)を含むAssemblerResult
オブジェクトを返します。 - DDX ドキュメントを表す
-
アセンブルされた XDP ドキュメントを取得します。
新しく作成した XDP ドキュメントを取得するには、次の操作を実行します。
AssemblerResult
オブジェクトのdocuments
フィールドにアクセスします。これは、結果の PDF ドキュメントを格納するMap
オブジェクトです。Map
オブジェクトを反復処理して各結果ドキュメントを取得します。次に、その配列メンバーのvalue
をBLOB
にキャストします。BLOB
オブジェクトのMTOM
プロパティにアクセスして、PDF ドキュメントを表すバイナリデータを抽出します。XDP ファイルに書き出すことができるバイトの配列を返します。