手順の概要

複数の XDP フラグメントをアセンブルするには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. PDF Assembler クライアントを作成します。
  3. 既存の DDX ドキュメントを参照します。
  4. XDP ドキュメントを参照します。
  5. 実行時オプションを設定します。
  6. 複数の XDP ドキュメントをアセンブリします。
  7. アセンブルされた 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 resultXDP sourceXDPContent 要素を含める必要があります。

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 フラグメントのアセンブル

Web サービス API を使用した複数の XDP フラグメントのアセンブル

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

PDF ドキュメントをプログラムで組み立てる

フラグメントを使用した PDF ドキュメントの作成

Java API を使用した複数の XDP フラグメントのアセンブル

Assembler Service API(Java)を使用して、複数の XDP フラグメントをアセンブルします。

  1. プロジェクトファイルを含めます。

    adobe-livecycle-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。

  2. PDF Assembler クライアントを作成します。

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用して ServiceClientFactory オブジェクトを渡すことにより、AssemblerServiceClient オブジェクトを作成します。
  3. 既存の DDX ドキュメントを参照します。

    • コンストラクタを使用し、DDX ファイルの場所を指定する文字列値を渡すことによって、その DDX ドキュメントを表す java.io.FileInputStream オブジェクトを作成します。
    • コンストラクターを使用して java.io.FileInputStream オブジェクトを渡すことによって、com.adobe.idp.Document オブジェクトを作成します。
  4. 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 ファイルごとにこのタスクを繰り返します)。
  5. 実行時オプションを設定します。

    • コンストラクターを使用して、実行時オプションを格納する AssemblerOptionSpec オブジェクトを作成します。
    • AssemblerOptionSpec オブジェクトに属するメソッドを呼び出して、ビジネス要件を満たすよう実行時オプションを設定します。例えば、エラーが発生したときにジョブの処理を続行するように Assembler サービスに指示するには、AssemblerOptionSpec オブジェクトの setFailOnError メソッドを呼び出して false を渡します。
  6. 複数の 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 オブジェクトを返します。

  7. アセンブルされた 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 フラグメントを作成します。

  1. プロジェクトファイルを含めます。

    MTOM を使用する Microsoft .NET プロジェクトを作成します。サービス参照を設定する際は、以下の WSDL 定義を必ず使用してください。

     https://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1.
    
    NOTE
    localhost を、AEM Forms をホストするサーバーの IP アドレスに置換します。
  2. 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 定数値を割り当てます。
  3. 既存の DDX ドキュメントを参照します。

    • コンストラクターを使用して BLOB オブジェクトを作成します。BLOB オブジェクトは、DDX ドキュメントを格納するために使用されます。
    • コンストラクターを呼び出し、DDX ドキュメントのファイルの場所とファイルを開くモードを表す文字列値を渡すことによって、System.IO.FileStream オブジェクトを作成します。
    • System.IO.FileStream オブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStream オブジェクトの Length プロパティを取得することでバイト配列のサイズを決定することができます。
    • System.IO.FileStream オブジェクトの Read メソッドを呼び出して、バイト配列にストリームデータを入力します。読み取り対象のバイト配列、開始位置、ストリーム長を渡します。
    • MTOM プロパティにバイト配列の内容を割り当てて、BLOB オブジェクトに入力します。
  4. 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 ドキュメントごとに実行します)。
  5. 実行時オプションを設定します。

    • ランタイムオプションを格納する AssemblerOptionSpec オブジェクトをコンストラクタで作成します。
    • AssemblerOptionSpec オブジェクトに属するデータメンバーに値を割り当てることで、ビジネス要件に応じたランタイムオプションを設定します。例えば、エラーが発生した場合にジョブの処理を続行するように Assembler サービスに指示するには、 falseAssemblerOptionSpec オブジェクトの failOnError データメンバーに割り当てます。
  6. 複数の XDP ドキュメントをアセンブリします。

    AssemblerServiceClient オブジェクトの invokeDDX メソッドを呼び出して、以下の値を渡します。

    • DDX ドキュメントを表す BLOB オブジェクト
    • 必要なファイルを含む MyMapOf_xsd_string_To_xsd_anyType オブジェクト
    • 実行時オプションを指定する AssemblerOptionSpec オブジェクト

    invokeDDX メソッドは、ジョブの結果と例外(発生した場合)を含む AssemblerResult オブジェクトを返します。

  7. アセンブルされた XDP ドキュメントを取得します。

    新しく作成した XDP ドキュメントを取得するには、次の操作を実行します。

    • AssemblerResult オブジェクトの documents フィールドにアクセスします。これは、結果の PDF ドキュメントを格納する Map オブジェクトです。
    • Map オブジェクトを反復処理して各結果ドキュメントを取得します。次に、その配列メンバーのvalueBLOBにキャストします。
    • BLOB オブジェクトの MTOM プロパティにアクセスして、PDF ドキュメントを表すバイナリデータを抽出します。XDP ファイルに書き出すことができるバイトの配列を返します。
前のページ暗号化された PDF ドキュメントのアセンブリ
次のページ通し番号を使用したドキュメントのアセンブリ

Experience Manager