複数の XDP フラグメントを 1 つの XDP ドキュメントにアセンブリできます。 例えば、各 XDP ファイルにヘルスフォームの作成に使用される 1 つ以上のサブフォームが含まれている XDP フラグメントについて考えてみましょう。 次の図に、アウトラインビューを示します ( 複数の XDP フラグメントのアセンブリ クイックスタート ):
次の図に、patient セクションを示します ( 複数の XDP フラグメントのアセンブリ クイックスタート ):
次の図に、患者の健康に関する節を示します ( 複数の XDP フラグメントのアセンブリ クイックスタート ):
このフラグメントには、 subPatientPhysical および subPatientHealth. これらの両方のサブフォームは、Assembler サービスに渡される DDX ドキュメント内で参照されます。 次の図に示すように、Assembler サービスを使用して、これらの XDP フラグメントをすべて 1 つの XDP ドキュメントに組み合わせることができます。
次の DDX ドキュメントは、複数の XDP フラグメントを XDP ドキュメントにアセンブリします。
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<XDP result="tuc018result.xdp">
<XDP source="tuc018_template_flowed.xdp">
<XDPContent insertionPoint="ddx_fragment" source="tuc018_contact.xdp" fragment="subPatientContact" required="false"/>
<XDPContent insertionPoint="ddx_fragment" source="tuc018_patient.xdp" fragment="subPatientPhysical" required="false"/>
<XDPContent insertionPoint="ddx_fragment" source="tuc018_patient.xdp" fragment="subPatientHealth" required="false"/>
</XDP>
</XDP>
</DDX>
DDX ドキュメントに XDP が含まれている result
結果の名前を指定するタグ。 この場合、値は tuc018result.xdp
. この値は、Assembler サービスが結果を返した後に XDP ドキュメントを取得するために使用されるアプリケーションロジックで参照されます。 例えば、アセンブリされた XDP ドキュメントを取得するために使用される次の Java アプリケーションロジックについて考えてみます(値が太字で示されています)。
//Iterate through the map object to retrieve the result XDP document
for (Iterator i = allDocs.entrySet().iterator(); i.hasNext();) {
// Retrieve the Map object’s value
Map.Entry e = (Map.Entry)i.next();
//Get the key name as specified in the
//DDX document
String keyName = (String)e.getKey();
if (keyName.equalsIgnoreCase("tuc018result.xdp"))
{
Object o = e.getValue();
outDoc = (Document)o;
//Save the result PDF file
File myOutFile = new File("C:\\AssemblerResultXDP.xdp");
outDoc.copyToFile(myOutFile);
}
}
この XDP source
タグは、XDP フラグメントを追加するためのコンテナとして、または同じ順序で追加される多数のドキュメントの 1 つとして使用できる完全な XDP ドキュメントを表す XDP ファイルを指定します。 この場合、XDP ドキュメントはコンテナとしてのみ使用されます ( 最初の図は 複数の XDP フラグメントのアセンブリ) をクリックします。 つまり、他の XDP ファイルは XDP コンテナ内に配置されます。
サブフォームごとに、 XDPContent
要素(この要素はオプションです)。 上記の例では、次の 3 つのサブフォームがあることに注意してください。 subPatientContact
, subPatientPhysical
、および subPatientHealth
. 両方の subPatientPhysical
サブフォームおよび subPatientHealth
サブフォームは、同じ XDP ファイル tuc018_patient.xdp に存在します。 fragment 要素は、Designer で定義されたサブフォームの名前を指定します。
Assembler サービスについて詳しくは、 AEM Formsのサービスリファレンス.
DDX ドキュメントについて詳しくは、 Assembler サービスと DDX リファレンス.
複数の XDP フラグメントをアセンブリするには、次のタスクを実行します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。 Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。 Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
Assembler クライアントのPDF
Assembler 操作をプログラムで実行する前に、Assembler サービスクライアントを作成します。
既存の DDX ドキュメントの参照
複数の XDP ドキュメントをアセンブリするには、DDX ドキュメントを参照する必要があります。 この DDX ドキュメントには XDP result
, XDP source
、および XDPContent
要素。
XDP ドキュメントの参照
複数の XDP ドキュメントをアセンブリするには、結果の XDP ドキュメントをアセンブリするために使用されるすべての XDP ファイルを参照します。 XDP ドキュメントに含まれるサブフォームの名前が、 source
属性が fragment
属性。 サブフォームは Designer で定義されます。 例えば、次の XML について考えてみます。
<XDPContent insertionPoint="ddx_fragment" source="tuc018_contact.xdp" fragment="subPatientContact" required="false"/>
次の名前のサブフォーム: subPatientContact は、 tuc018_contact.xdp.
実行時オプションを設定
ジョブの実行中に Assembler サービスの動作を制御する実行時オプションを設定できます。 例えば、エラーが発生した場合にジョブの処理を続行するよう Assembler サービスに指示するオプションを設定できます。
複数の XDP ドキュメントのアセンブリ
複数の XDP ファイルをアセンブリするには、 invokeDDX
操作。 Assembler サービスは、コレクションオブジェクト内でアセンブリされた XDP ドキュメントを返します。
アセンブリされた XDP ドキュメントの取得
アセンブリされた XDP ドキュメントがコレクションオブジェクト内で返されます。 コレクションオブジェクトを繰り返し処理し、XDP ドキュメントを XDP ファイルとして保存します。 また、XDP ドキュメントを別のAEM Formsサービス(Output など)に渡すこともできます。
関連トピック
Java API を使用した複数の XDP フラグメントのアセンブリ
Web サービス API を使用した複数の XDP フラグメントのアセンブリ
Assembler Service API(Java) を使用して、複数の XDP フラグメントをアセンブリします。
プロジェクトファイルを含めます。
Java プロジェクトのクラスパスに、adobe-assembler-client.jar などのクライアント JAR ファイルを含めます。
Assembler クライアントをPDFします。
ServiceClientFactory
オブジェクトを作成します。AssemblerServiceClient
オブジェクトのコンストラクタを使用し、 ServiceClientFactory
オブジェクト。既存の DDX ドキュメントを参照します。
java.io.FileInputStream
コンストラクターを使用して DDX ファイルの場所を指定する string 値を渡すことによって DDX ドキュメントを表すオブジェクト。com.adobe.idp.Document
オブジェクトを渡すことによって、java.io.FileInputStream
オブジェクトを作成します。XDP ドキュメントを参照します。
の作成 java.util.Map
オブジェクトを使用して入力 XDP ドキュメントを保存するために使用します HashMap
コンストラクタ。
の作成 com.adobe.idp.Document
オブジェクトを選択し、 java.io.FileInputStream
入力 XDP ファイルを含むオブジェクト(各 XDP ファイルに対してこのタスクを繰り返します)。
エントリを java.util.Map
オブジェクトを呼び出す put
メソッドを使用し、次の引数を渡す。
source
DDX ドキュメントで指定された element 値(XDP ファイルごとにこのタスクを繰り返します)com.adobe.idp.Document
に対応する XDP ドキュメントを格納するオブジェクト source
要素(XDP ファイルごとにこのタスクを繰り返します)実行時オプションを設定します。
AssemblerOptionSpec
コンストラクタを使用して実行時オプションを格納するオブジェクト。AssemblerOptionSpec
オブジェクト。 例えば、エラーが発生したときにジョブの処理を続行するように Assembler サービスに指示するには、 AssemblerOptionSpec
オブジェクトの setFailOnError
メソッドとパス false
.複数の XDP ドキュメントをアセンブリします。
を呼び出す AssemblerServiceClient
オブジェクトの invokeDDX
メソッドを使用して、以下の必須値を渡します。
com.adobe.idp.Document
使用する DDX ドキュメントを表すオブジェクトjava.util.Map
入力 XDP ファイルを格納するオブジェクトcom.adobe.livecycle.assembler.client.AssemblerOptionSpec
デフォルトのフォントやジョブログレベルを含む、実行時のオプションを指定するオブジェクトこの invokeDDX
メソッドは、 com.adobe.livecycle.assembler.client.AssemblerResult
アセンブリされた XDP ドキュメントを格納するオブジェクト。
アセンブリされた XDP ドキュメントを取得します。
アセンブリされた XDP ドキュメントを取得するには、次の操作を実行します。
AssemblerResult
オブジェクトの getDocuments
メソッド。 このメソッドは、 java.util.Map
オブジェクト。java.util.Map
結果が見つかるまでオブジェクトを閉じます。 com.adobe.idp.Document
オブジェクト。com.adobe.idp.Document
オブジェクトの copyToFile
メソッドを使用して、アセンブリされた XDP ドキュメントを抽出します。関連トピック
クイックスタート(SOAP モード):Java API を使用した複数の XDP フラグメントのアセンブリ
Assembler Service API(Web サービス)を使用して、複数の XDP フラグメントをアセンブリします。
プロジェクトファイルを含めます。
MTOM を使用するMicrosoft .NET プロジェクトを作成します。 サービス参照を設定する際は、次の WSDL 定義を必ず使用してください。
http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1.
置換 localhost
を、AEM Formsをホストするサーバーの IP アドレスに設定します。
Assembler クライアントをPDFします。
の作成 AssemblerServiceClient
オブジェクトのデフォルトのコンストラクタを使用します。
の作成 AssemblerServiceClient.Endpoint.Address
オブジェクトを System.ServiceModel.EndpointAddress
コンストラクタ。 WSDL をAEM Formsサービスに指定する string 値 ( 例えば、 http://localhost:8080/soap/services/AssemblerService?blob=mtom
) をクリックします。 を使用する必要はありません。 lc_version
属性。 この属性は、サービス参照を作成する際に使用されます。
の作成 System.ServiceModel.BasicHttpBinding
オブジェクトを作成するには、 AssemblerServiceClient.Endpoint.Binding
フィールドに入力します。 戻り値を BasicHttpBinding
にキャストします。
を System.ServiceModel.BasicHttpBinding
オブジェクトの MessageEncoding
~に向かって WSMessageEncoding.Mtom
. この値は、MTOM が確実に使用されるようにします。
次のタスクを実行して、基本的な HTTP 認証を有効にします。
AssemblerServiceClient.ClientCredentials.UserName.UserName
フィールドに入力します。AssemblerServiceClient.ClientCredentials.UserName.Password
フィールドに入力します。HttpClientCredentialType.Basic
定数値 BasicHttpBindingSecurity.Transport.ClientCredentialType
フィールドに入力します。BasicHttpSecurityMode.TransportCredentialOnly
定数値 BasicHttpBindingSecurity.Security.Mode
フィールドに入力します。既存の DDX ドキュメントを参照します。
BLOB
オブジェクトを作成します。この BLOB
オブジェクトは、DDX ドキュメントを保存するために使用されます。System.IO.FileStream
オブジェクトを開くには、コンストラクターを呼び出し、DDX ドキュメントのファイルの場所とファイルを開くモードを表す string 値を渡します。System.IO.FileStream
オブジェクト。 バイト配列のサイズは、 System.IO.FileStream
オブジェクトの Length
プロパティ。System.IO.FileStream
オブジェクトの Read
メソッド。 読み取るバイト配列、開始位置、ストリーム長を渡します。BLOB
オブジェクトを割り当てる MTOM
プロパティにバイト配列の内容を入力します。XDP ドキュメントを参照します。
BLOB
オブジェクトを指定します。 この BLOB
オブジェクトは、入力ファイルを保存するために使用されます。System.IO.FileStream
オブジェクトを指定します。System.IO.FileStream
オブジェクト。 バイト配列のサイズは、 System.IO.FileStream
オブジェクトの Length
プロパティ。System.IO.FileStream
オブジェクトの Read
メソッド。 読み取るバイト配列、開始位置、ストリーム長を渡します。BLOB
オブジェクトを割り当てる MTOM
フィールドにバイト配列の内容を入力します。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 ドキュメントごとに実行します)。実行時オプションを設定します。
AssemblerOptionSpec
コンストラクタを使用して実行時オプションを格納するオブジェクト。AssemblerOptionSpec
オブジェクト。 例えば、エラーが発生した場合にジョブの処理を続行するように Assembler サービスに指示するには、 false
から AssemblerOptionSpec
オブジェクトの failOnError
データメンバー。複数の XDP ドキュメントをアセンブリします。
を呼び出す AssemblerServiceClient
オブジェクトの invokeDDX
メソッドを使用して、次の値を渡します。
BLOB
DDX ドキュメントを表すオブジェクトMyMapOf_xsd_string_To_xsd_anyType
必要なファイルを含むオブジェクトAssemblerOptionSpec
実行時のオプションを指定するオブジェクトこの invokeDDX
メソッドは、 AssemblerResult
ジョブの結果と発生した例外を含むオブジェクト。
アセンブリされた XDP ドキュメントを取得します。
新しく作成した XDP ドキュメントを取得するには、次の操作を実行します。
AssemblerResult
オブジェクトの documents
フィールド ( Map
結果のPDF・ドキュメントを格納するオブジェクト。Map
オブジェクトを使用して各結果ドキュメントを取得します。 次に、その配列メンバの value
から BLOB
.BLOB
オブジェクトの MTOM
プロパティ。 XDP ファイルに書き出すことができるバイトの配列を返します。関連トピック