値別に Forms をレンダリング rendering-forms-by-value

このドキュメントのサンプルと例は、JEE 環境の AEM Forms のみを対象としています。

通常、Designer で作成されたフォームデザインは、参照によって Forms サービスに渡されます。フォームデザインは大きくなる可能性があり、その結果、フォームデザインのバイトを値でマーシャリングする必要がなくなるよう、参照で渡す方がより効率的です。また、Forms サービスは、キャッシュ時にフォームデザインを継続的に読み取る必要がないように、フォームデザインをキャッシュすることもできます。

フォームデザインに UUID 属性が含まれている場合は、キャッシュされます。UUID 値は、すべてのフォームデザインで一意であり、フォームを一意に識別するために使用されます。値でフォームをレンダリングする場合、繰り返し使用する場合にのみフォームをキャッシュする必要があります。ただし、フォームを繰り返し使用せず、一意にする必要がある場合は、AEM Forms API で設定されたキャッシュオプションを使用して、フォームをキャッシュするのを避けることができます。

Forms サービスは、フォームデザイン内のリンクされたコンテンツの場所を解決することもできます。例えば、フォームデザイン内で参照されるリンク画像は、相対 URL です。リンクされたコンテンツは、常にフォームデザインの場所を基準とした相対コンテンツと見なされます。したがって、リンクされたコンテンツを解決するには、フォームデザインの絶対パスを適用して、その場所を決定する必要があります。

参照によってフォームデザインを渡す代わりに、値でフォームデザインを渡すことができます。フォームデザインを動的に作成する場合、値でフォームデザインを渡すと効率的です。つまり、クライアントアプリケーションが実行時にフォームデザインを作成する XML を生成する場合です。この場合、フォームデザインはメモリに保存されるので、物理リポジトリに保存されません。実行時に動的にフォームデザインを作成し、値で渡す場合は、フォームをキャッシュして、Forms サービスのパフォーマンスを向上させることができます。

値によるフォームの受け渡しの制限

フォームデザインが値で渡される場合は、次の制限が適用されます。

  • フォームデザイン内に相対的にリンクされたコンテンツを含めることはできません。すべての画像とフラグメントは、フォームデザイン内に埋め込むか、絶対に参照する必要があります。
  • フォームのレンダリング後は、サーバーサイドの計算を実行できません。フォームが Forms サービスに送り返されると、データが抽出され、サーバーサイドの計算なしで返されます。
  • HTML は実行時にのみリンク画像を使用できるので、埋め込まれた画像を使用して HTML を生成することはできません。これは、Forms サービスが参照先のフォームデザインから画像を取得することで、HTML での埋め込み画像をサポートしているためです。値で渡されたフォームデザインには参照先がないので、HTML ページが表示されているときに埋め込み画像を抽出することはできません。したがって、画像参照は、HTML でレンダリングする絶対パスにする必要があります。
NOTE
異なる種類のフォームを値でレンダリングすることもできます(例えば、HTML フォームや、使用権限を含むフォーム)がありますが、このセクションでは、インタラクティブ PDF forms のレンダリングについて説明します。
NOTE
AEM Forms サービスについて詳しくは、AEM Forms サービスリファレンスを参照してください。

手順の概要 summary-of-steps

値でフォームをレンダリングするには、次の手順を実行します。

  1. プロジェクトファイルを含めます。
  2. Forms Client API オブジェクトを作成します。
  3. フォームデザインを保存します。
  4. 値でフォームをレンダリングします。
  5. フォームデータストリームをクライアントの Web ブラウザーに書き込みます。

プロジェクトファイルの組み込み

必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めるようにします。

Forms Client API オブジェクトの作成

プログラムによってデータを PDF form クライアント API に読み込む前に、Data Integration Service クライアントを作成する必要があります。サービスクライアントを作成する場合、サービスを呼び出すために必要な接続設定を定義します。

フォームデザインの参照

値でフォームをレンダリングする場合は、レンダリングするフォームデザインを含む com.adobe.idp.Document オブジェクトを作成する必要があります。既存の XDP ファイルを参照することも、フォームデザインを動的に作成して com.adobe.idp.Document そのデータを使って

NOTE
このセクションと対応するクイックスタートでは、既存の XDP ファイルを参照します。

値でフォームをレンダリング

値でフォームをレンダリングするには、 com.adobe.idp.Document フォームデザインをレンダリングメソッドの inDataDoc パラメーター ( 任意の FormsServiceClient オブジェクトのレンダリングメソッド ( 例: renderPDFForm, (Deprecated) renderHTMLFormなど )。 このパラメーター値は、通常、フォームと結合されるデータ用に予約されます。同様に、空の文字列値を formQuery パラメーターに渡します。通常、このパラメーターにはフォームデザインの名前を指定する文字列値が必要です。

NOTE
フォーム内にデータを表示する場合は、データは xfa:datasets 要素内で指定する必要があります。XFA アーキテクチャについて詳しくは、https://www.pdfa.org/norm-refs/XFA-3_3.pdfを参照してください。

フォームデータストリームをクライアントの web ブラウザーに書き込む

Forms サービスがフォームを値でレンダリングすると、クライアントの web ブラウザーに書き込む必要のあるフォームデータストリームが返されます。クライアント Web ブラウザーに書き込まれると、フォームはユーザーに対して表示されます。

関連トピック

Java API を使用して値でフォームをレンダリング

Web サービス API を使用して値でフォームをレンダリング

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

接続プロパティの設定

Forms サービス API のクイックスタート

Forms サービスにドキュメントを渡す

Forms をレンダリングする web アプリケーションの作成

Java API を使用して値でフォームをレンダリング render-a-form-by-value-using-the-java-api

Forms API(Java)を使用して値でフォームをレンダリング:

  1. プロジェクトファイルを含める

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

  2. Forms Client API オブジェクトの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用して ServiceClientFactory オブジェクトを渡し、FormsServiceClient オブジェクトを作成します。
  3. フォームデザインの参照

    • コンストラクターを使用して、XDP ファイルの場所を指定する文字列の値を渡すことにより、レンダリングするフォームデザインを表す java.io.FileInputStream オブジェクトを作成します。
    • コンストラクターを使用して java.io.FileInputStream オブジェクトを渡すことにり、com.adobe.idp.Document オブジェクトを作成します。
  4. 値でフォームをレンダリング

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

    • 空の文字列の値(通常、このパラメーターにはフォームデザインの名前を指定する文字列の値が必要です)。
    • フォームデザインを含む com.adobe.idp.Document オブジェクト。通常、このパラメーター値はフォームにマージするデータ用に予約されています。
    • 実行時オプションを保存する PDFFormRenderSpec オブジェクト。これはオプションのパラメーターで、実行時オプションを指定しない場合は、null を指定できます。
    • Forms サービスで必要となる URI 値が含まれる URLSpec オブジェクト。
    • 添付ファイルを保存する java.util.HashMap オブジェクト。これはオプションのパラメーターで、フォームにファイルを添付しない場合に null を指定できます。

    renderPDFForm メソッドは、クライアント web ブラウザーに書き込むことができるフォームデータストリームを含む FormsResult オブジェクトを返します。

  5. フォームデータストリームをクライアント web ブラウザーに書き込む

    • の作成 com.adobe.idp.Document を呼び出すことによって、オブジェクトを FormsResult オブジェクトの getOutputContent メソッド。
    • getContentType メソッドを呼び出して、com.adobe.idp.Document オブジェクトのコンテンツタイプを取得します。
    • を設定します。 javax.servlet.http.HttpServletResponse を呼び出すことによるオブジェクトのコンテンツタイプ setContentType メソッドを使用して、 com.adobe.idp.Document オブジェクト。
    • の作成 javax.servlet.ServletOutputStream オブジェクトを使用します。オブジェクトは、 javax.servlet.http.HttpServletResponse オブジェクトの getOutputStream メソッド。
    • com.adobe.idp.Document オブジェクトの getInputStream メソッドを呼び出すことによって、java.io.InputStream オブジェクトを作成します。
    • バイト配列を作成し、InputStream オブジェクトのサイズを割り当てます。を呼び出す InputStream オブジェクトの available メソッドを使用して InputStream オブジェクト。
    • を呼び出して、フォームデータストリームを byte 配列に入力します。 InputStream オブジェクトの readメソッドを使用し、バイト配列を引数として渡す。
    • を呼び出す javax.servlet.ServletOutputStream オブジェクトの write メソッドを使用して、フォームデータストリームをクライアント Web ブラウザーに送信します。 バイト配列を write メソッドに渡します。

関連項目

値別に Forms をレンダリング

クイックスタート(SOAP モード):Java API を使用した値によるレンダリング

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

接続プロパティの設定

Web サービス API を使用して値でフォームをレンダリング render-a-form-by-value-using-the-web-service-api

Forms API(web サービス)を使用して値でフォームをレンダリングします。

  1. プロジェクトファイルを含める

    • Forms Service WSDL を使用する Java プロキシクラスを作成します。
    • Java プロキシクラスをクラスパスに含めます。
  2. Forms Client API オブジェクトの作成

    FormsService オブジェクトを作成し、認証情報を設定します。

  3. フォームデザインの参照

    • コンストラクターを使用して java.io.FileInputStream オブジェクトを作成します。XDP ファイルの場所を指定する文字列の値を渡します。
    • コンストラクターを使用して BLOB オブジェクトを作成します。BLOB オブジェクトは、パスワードで暗号化された PDF ドキュメントを保存するために使用されます。
    • java.io.FileInputStream オブジェクトのコンテンツを格納するバイト配列を作成します。バイト配列のサイズは、 java.io.FileInputStream オブジェクトのサイズを available メソッド。
    • を呼び出して、バイト配列にストリームデータを入力します。 java.io.FileInputStream オブジェクトの read メソッドを使用してバイト配列を渡す。
    • setBinaryData メソッドを呼び出してバイト配列を渡すことにより、BLOB オブジェクトに入力します。
  4. 値でフォームをレンダリング

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

    • 空の文字列の値(通常、このパラメーターにはフォームデザインの名前を指定する文字列の値が必要です)。
    • フォームデザインを含む BLOB オブジェクト。通常、このパラメーター値はフォームにマージするデータ用に予約されています。
    • 実行時オプションを保存する PDFFormRenderSpec オブジェクト。これはオプションのパラメーターで、実行時オプションを指定しない場合は、null を指定できます。
    • Forms サービスで必要となる URI 値が含まれる URLSpec オブジェクト。
    • 添付ファイルを保存する java.util.HashMap オブジェクト。これはオプションのパラメーターで、 フォームにファイルを添付しない場合に、nullを指定します。
    • メソッドによって設定される空の com.adobe.idp.services.holders.BLOBHolder オブジェクト。これは、レンダリングされた PDF フォームを保存するために使用されます。
    • メソッドによって設定される空の javax.xml.rpc.holders.LongHolder オブジェクト。(この引数は、フォームのページ数を保存します)。
    • メソッドによって設定される空の javax.xml.rpc.holders.StringHolder オブジェクト。(この引数はロケール値を格納します。)
    • この操作の結果を格納する 空の com.adobe.idp.services.holders.FormsResultHolder オブジェクト。

    renderPDFForm メソッドは、最後の引数値として渡される com.adobe.idp.services.holders.FormsResultHolder オブジェクトに、クライアント web ブラウザーに書き込む必要のあるフォームデータストリームを入力します。

  5. フォームデータストリームをクライアント web ブラウザーに書き込む

    • の作成 FormResult オブジェクトを作成するには、 com.adobe.idp.services.holders.FormsResultHolder オブジェクトの value データメンバー。
    • の作成 BLOB を呼び出してフォームデータを含むオブジェクト FormsResult オブジェクトの getOutputContent メソッド。
    • getContentType メソッドを呼び出して、BLOB オブジェクトのコンテンツタイプを取得します。
    • を設定します。 javax.servlet.http.HttpServletResponse を呼び出すことによるオブジェクトのコンテンツタイプ setContentType メソッドを使用して、 BLOB オブジェクト。
    • の作成 javax.servlet.ServletOutputStream オブジェクトを使用します。オブジェクトは、 javax.servlet.http.HttpServletResponse オブジェクトの getOutputStream メソッド。
    • バイト配列を作成し、 BLOB オブジェクトの getBinaryData メソッド。 このタスクは、FormsResult オブジェクトのコンテンツをバイト配列に割り当てます。
    • を呼び出す javax.servlet.http.HttpServletResponse オブジェクトの write メソッドを使用して、フォームデータストリームをクライアント Web ブラウザーに送信します。 バイト配列を write メソッドに渡します。

関連項目

値別に Forms をレンダリング

Base64 エンコーディングを使用した AEM Forms の呼び出し

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2