このドキュメントのサンプルと例は、JEE 環境の AEM Forms のみを対象としています。
通常、Designer で作成されたフォームデザインは、参照によって Forms サービスに渡されます。フォームデザインは大きくなる可能性があり、その結果、フォームデザインのバイトを値でマーシャリングする必要がなくなるよう、参照で渡す方がより効率的です。また、Forms サービスは、キャッシュ時にフォームデザインを継続的に読み取る必要がないように、フォームデザインをキャッシュすることもできます。
フォームデザインに UUID 属性が含まれている場合は、キャッシュされます。UUID 値は、すべてのフォームデザインで一意であり、フォームを一意に識別するために使用されます。値でフォームをレンダリングする場合、繰り返し使用する場合にのみフォームをキャッシュする必要があります。ただし、フォームを繰り返し使用せず、一意にする必要がある場合は、AEM Forms API で設定されたキャッシュオプションを使用して、フォームをキャッシュするのを避けることができます。
Forms サービスは、フォームデザイン内のリンクされたコンテンツの場所を解決することもできます。例えば、フォームデザイン内で参照されるリンク画像は、相対 URL です。リンクされたコンテンツは、常にフォームデザインの場所を基準とした相対コンテンツと見なされます。したがって、リンクされたコンテンツを解決するには、フォームデザインの絶対パスを適用して、その場所を決定する必要があります。
参照によってフォームデザインを渡す代わりに、値でフォームデザインを渡すことができます。フォームデザインを動的に作成する場合、値でフォームデザインを渡すと効率的です。つまり、クライアントアプリケーションが実行時にフォームデザインを作成する XML を生成する場合です。この場合、フォームデザインはメモリに保存されるので、物理リポジトリに保存されません。実行時に動的にフォームデザインを作成し、値で渡す場合は、フォームをキャッシュして、Forms サービスのパフォーマンスを向上させることができます。
値によるフォームの受け渡しの制限
フォームデザインが値で渡される場合は、次の制限が適用されます。
異なる種類のフォームを値でレンダリングすることもできます(例えば、HTML フォームや、使用権限を含むフォーム)がありますが、このセクションでは、インタラクティブ PDF forms のレンダリングについて説明します。
AEM Forms サービスについて詳しくは、AEM Forms サービスリファレンスを参照してください。
値でフォームをレンダリングするには、次の手順を実行します。
プロジェクトファイルの組み込み
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めるようにします。
Forms Client API オブジェクトの作成
プログラムによってデータを PDF form クライアント API に読み込む前に、Data Integration Service クライアントを作成する必要があります。サービスクライアントを作成する場合、サービスを呼び出すために必要な接続設定を定義します。
フォームデザインの参照
値でフォームをレンダリングする場合は、レンダリングするフォームデザインを含む com.adobe.idp.Document
オブジェクトを作成する必要があります。既存の XDP ファイルを参照することも、実行時にフォームデザインを動的に作成してそのデータを com.adobe.idp.Document
に入力することもできます。
このセクションと対応するクイックスタートでは、既存の XDP ファイルを参照します。
値でフォームをレンダリング
値でフォームをレンダリングするには、フォームデザインを含む com.adobe.idp.Document
インスタンスをレンダリングメソッドの inDataDoc
パラメーターに渡します(renderPDFForm
、(Deprecated) renderHTMLForm
など、FormsServiceClient
オブジェクトのレンダリングメソッドのいずれでもかまいません)。このパラメーター値は、通常、フォームと結合されるデータ用に予約されます。同様に、空の文字列値を formQuery
パラメーターに渡します。通常、このパラメーターにはフォームデザインの名前を指定する文字列値が必要です。
フォーム内にデータを表示する場合は、データは xfa:datasets
要素内で指定する必要があります。XFA アーキテクチャについて詳しくは、https://www.pdfa.org/norm-refs/XFA-3_3.pdfを参照してください。
フォームデータストリームをクライアントの web ブラウザーに書き込む
Forms サービスがフォームを値でレンダリングすると、クライアントの web ブラウザーに書き込む必要のあるフォームデータストリームが返されます。クライアント Web ブラウザーに書き込まれると、フォームはユーザーに対して表示されます。
関連トピック
Web サービス API を使用して値でフォームをレンダリング
Forms をレンダリングする web アプリケーションの作成
Forms API(Java)を使用して値でフォームをレンダリング:
プロジェクトファイルを含める
adobe-forms-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
Forms Client API オブジェクトの作成
ServiceClientFactory
オブジェクトを作成します。ServiceClientFactory
オブジェクトを渡し、FormsServiceClient
オブジェクトを作成します。フォームデザインの参照
java.io.FileInputStream
オブジェクトを作成します。java.io.FileInputStream
オブジェクトを渡すことにり、com.adobe.idp.Document
オブジェクトを作成します。値でフォームをレンダリング
FormsServiceClient
オブジェクトの renderPDFForm
メソッドを呼び出して、次の値を渡します。
com.adobe.idp.Document
オブジェクト。通常、このパラメーター値はフォームにマージするデータ用に予約されています。PDFFormRenderSpec
オブジェクト。これはオプションのパラメーターで、実行時オプションを指定しない場合は、null
を指定できます。URLSpec
オブジェクト。java.util.HashMap
オブジェクト。これはオプションのパラメーターで、フォームにファイルを添付しない場合に null
を指定できます。renderPDFForm
メソッドは、クライアント web ブラウザーに書き込むことができるフォームデータストリームを含む FormsResult
オブジェクトを返します。
フォームデータストリームをクライアント web ブラウザーに書き込む
FormsResult
オブジェクトの getOutputContent
メソッドを呼び出して、com.adobe.idp.Document
オブジェクトを作成します。getContentType
メソッドを呼び出して、com.adobe.idp.Document
オブジェクトのコンテンツタイプを取得します。javax.servlet.http.HttpServletResponse
オブジェクトのコンテンツタイプを設定するには、setContentType
メソッドを呼び出して、com.adobe.idp.Document
オブジェクトのコンテンツタイプを渡します。javax.servlet.http.HttpServletResponse
オブジェクトの getOutputStream
メソッドを呼び出して、フォームデータストリームをクライアント web ブラウザーに書き込むために使用される javax.servlet.ServletOutputStream
オブジェクトを作成します。com.adobe.idp.Document
オブジェクトの getInputStream
メソッドを呼び出すことにより、java.io.InputStream
オブジェクトを作成します。InputStream
オブジェクトのサイズを割り当てます。InputStream
オブジェクトの available
メソッドを呼び出して、InputStream
オブジェクトのサイズを取得します。InputStream
オブジェクトの read
メソッドを呼び出して、バイト配列を引数として渡すことにより、バイト配列にフォームデータストリームを格納します。javax.servlet.ServletOutputStream
オブジェクトの write
メソッドを呼び出して、フォームデータストリームをクライアント web ブラウザーに送信します。バイト配列を write
メソッドに渡します。関連項目
クイックスタート(SOAP モード):Java API を使用した値によるレンダリング
Forms API(web サービス)を使用して値でフォームをレンダリングします。
プロジェクトファイルを含める
Forms Client API オブジェクトの作成
FormsService
オブジェクトを作成し、認証情報を設定します。
フォームデザインの参照
java.io.FileInputStream
オブジェクトを作成します。XDP ファイルの場所を指定する文字列の値を渡します。BLOB
オブジェクトを作成します。BLOB
オブジェクトは、パスワードで暗号化された PDF ドキュメントを保存するために使用されます。java.io.FileInputStream
オブジェクトのコンテンツを格納するバイト配列を作成します。available
メソッドを使用して java.io.FileInputStream
オブジェクトのサイズを取得することにより、バイト配列のサイズを指定できます。java.io.FileInputStream
オブジェクトの read
メソッドを呼び出してバイト配列を渡すことにより、バイト配列にストリームデータを格納します。setBinaryData
メソッドを呼び出してバイト配列を渡すことにより、BLOB
オブジェクトに入力します。値でフォームをレンダリング
FormsService
オブジェクトの renderPDFForm
メソッドを呼び出して、次の値を渡します。
BLOB
オブジェクト。通常、このパラメーター値はフォームにマージするデータ用に予約されています。PDFFormRenderSpec
オブジェクト。これはオプションのパラメーターで、実行時オプションを指定しない場合は、null
を指定できます。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 ブラウザーに書き込む必要のあるフォームデータストリームを入力します。
フォームデータストリームをクライアント web ブラウザーに書き込む
com.adobe.idp.services.holders.FormsResultHolder
オブジェクトの value
データメンバーの値を取得して、FormResult
オブジェクトを作成します。FormsResult
オブジェクトの getOutputContent
メソッドを呼び出して、フォームデータを含む BLOB
オブジェクトを作成します。getContentType
メソッドを呼び出して、BLOB
オブジェクトのコンテンツタイプを取得します。javax.servlet.http.HttpServletResponse
オブジェクトのコンテンツタイプを設定するには、setContentType
メソッドを呼び出して、BLOB
オブジェクトのコンテンツタイプを渡します。javax.servlet.http.HttpServletResponse
オブジェクトの getOutputStream
メソッドを呼び出して、フォームデータストリームをクライアント web ブラウザーに書き込むために使用される javax.servlet.ServletOutputStream
オブジェクトを作成します。BLOB
オブジェクトの getBinaryData
メソッドを呼び出して入力します。このタスクは、FormsResult
オブジェクトのコンテンツをバイト配列に割り当てます。javax.servlet.http.HttpServletResponse
オブジェクトの write
メソッドを呼び出して、フォームデータストリームをクライアント web ブラウザーに送信します。バイト配列を write
メソッドに渡します。関連項目