クライアント側でのフォームのレンダリング rendering-forms-at-the-client
このドキュメントのサンプルと例は、JEE 環境の AEM Forms のみを対象としています。
クライアント側でのフォームのレンダリング rendering-forms-at-the-client-inner
Acrobat や Adobe Reader のクライアントサイドレンダリング機能を利用して、PDF コンテンツの配信を最適化し、Forms サービスのネットワーク負荷への対応力を向上させることができます。この処理をクライアントでのレンダリングといいます。クライアントでフォームをレンダリングするには、クライアントデバイス(通常は web ブラウザー)が Acrobat 7.0 または Adobe Reader 7.0 以降を使用している必要があります。
サーバーサイドのスクリプト実行によるフォームの変更は、ルートサブフォームに restoreState
属性が auto
に設定されていない限り、クライアントで表示されるフォームには反映されません。この属性の詳細情報については、Forms Designer を参照してください。
手順の概要 summary-of-steps
クライアントでフォームをレンダリングするには、以下の作タスクを実行します。
- プロジェクトファイルを含めます。
- Forms Client API オブジェクトを作成します。
- クライアントレンダリングの実行時オプションを設定します。
- クライアントでフォームをレンダリングします。
- クライアントの web ブラウザーにフォームを書き込みます。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
Forms Client API オブジェクトの作成
Forms Service Client API 操作をプログラムで実行する前に、Forms サービスクライアントを作成する必要があります。Java API を使用している場合は、FormsServiceClient
オブジェクトを作成します。Forms web サービス API を使用している場合は、FormsService
オブジェクトを作成してください。
クライアントレンダリングの実行時オプションを設定
クライアントでフォームをレンダリングするには、RenderAtClient
実行時オプションを true
に設定して、クライアントレンダリングの実行時オプションを設定します。この結果、フォームがレンダリングされたクライアントデバイスに配信されます。RenderAtClient
が auto
(デフォルト値)の場合、フォームデザインがクライアントでレンダリングされるかどうかを決定します。編集可能なレイアウトを持つフォームデザインが要求されます。
設定可能な実行時オプションとして、SeedPDF
オプションがあります。SeedPDF
オプションは、PDF コンテナ(シード PDF ドキュメント)を、フォームデザインと XML データとに組み合わせます。フォームのデザインと XML データの両方が Acrobat または Adobe Reader に配信され、そこでフォームがレンダリングされます。SeedPDF
オプションは、フォームで使用されているフォントをクライアントコンピュータが持っていない場合に使用できます。例えば、フォームの所有者が使用ライセンスを持っているフォントに対して、エンドユーザーが使用ライセンスを持っていない場合などです。
Designer を使用して、シード PDF ファイルとして使用するための、シンプルなダイナミック PDF ファイルを作成することができます。このタスクを行うには、以下の手順が必要です。
- シード PDF ファイル内にフォントを埋め込む必要があるかどうかを判断します。シード PDF ファイルには、レンダリングされるフォームに必要なフォントを追加する必要があります。シード PDF ファイルにフォントを埋め込む場合、フォントのライセンス契約に違反していないことを確認してください。Designer では、合法的にフォントを埋め込むことができるかどうかを判断することができます。保存時に、フォームに埋め込めないフォントがある場合、Designer は埋め込めないフォントのリストをメッセージで表示します。このメッセージは、静的な PDF ドキュメントの場合は Designer に表示されません。
- Designer でシード PDF ファイルを作成する場合、最低限、メッセージを含むテキストフィールドを追加することを推奨します。Adobe Reader の旧バージョンを使用するユーザーに対しては、ドキュメントを表示するには Acrobat 7.0 以降、または Adobe Reader 7.0 以降が必要であることを示すメッセージが表示されます。
- シード PDF ファイルを、PDF ファイル名の拡張子をつけてダイナミック PDF ファイルとして保存します。
クライアントでフォームをレンダリング
クライアントでフォームをレンダリングするには、クライアントレンダリングの実行時オプションが、フォームをレンダリングするアプリケーションロジックに含まれていることを確認する必要があります。
フォームデータストリームをクライアントの web ブラウザーに書き込む
Forms サービスは、クライアントの web ブラウザーに書き込むフォームデータストリームを作成します。クライアントの web ブラウザーに書き込まれると、フォームは Acrobat 7.0 または Adobe Reader 7.0 以降でレンダリングされ、ユーザーに対して表示されます。
関連トピック
Java API を使用したクライアントでのフォームのレンダリング
Java API を使用したクライアントでのフォームのレンダリング render-a-form-at-the-client-using-the-java-api
Forms API (Java) を使用して、クライアントでフォームをレンダリングするには、以下の手順に従います。
-
プロジェクトファイルを含める
adobe-forms-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
Forms Client API オブジェクトの作成
- 接続プロパティを含む
ServiceClientFactory
オブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactory
オブジェクトを渡し、FormsServiceClient
オブジェクトを作成します。
- 接続プロパティを含む
-
クライアントレンダリング実行時オプションを設定する
- コンストラクタを使用して
PDFFormRenderSpec
オブジェクトを作成します。 RenderAtClient
実行時オプションを設定するには、PDFFormRenderSpec
オブジェクトのsetRenderAtClient
メソッドを呼び出し、列挙値RenderAtClient.Yes
を渡します。
- コンストラクタを使用して
-
クライアントでフォームをレンダリングする
FormsServiceClient
オブジェクトのrenderPDFForm
メソッドを呼び出し、次の値を渡します。- フォームデザイン名を指定する文字列値で、ファイル名の拡張子も含まれます。AEM Forms アプリケーションの一部であるフォームデザインを参照する場合は、
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
のように完全なパスを指定します。 - フォームと統合するデータを含む
com.adobe.idp.Document
オブジェクトです。データを統合しない場合、空のcom.adobe.idp.Document
オブジェクトを渡します。 - クライアントでフォームをレンダリングするために必要な実行時オプションを格納する
PDFFormRenderSpec
オブジェクトです。 - フォームを表示するために Forms サービスが必要とする URI の値を含む
URLSpec
オブジェクトです。 - 添付ファイルを保存する
java.util.HashMap
オブジェクトです。オプションのパラメーターです。フォームにファイルを添付しない場合はnull
を指定できます。
renderPDFForm
メソッドは、クライアントの Web ブラウザーに書き込む必要のあるフォームデータストリームを含むFormsResult
オブジェクトを返します。 - フォームデザイン名を指定する文字列値で、ファイル名の拡張子も含まれます。AEM Forms アプリケーションの一部であるフォームデザインを参照する場合は、
-
フォームデータストリームをクライアント 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
オブジェクトのread
メソッドを呼び出してバイト配列を引数として渡すことによって、バイト配列を作成してフォームデータストリームを入力します。javax.servlet.ServletOutputStream
オブジェクトのwrite
メソッドを呼び出して、フォームデータストリームをクライアント web ブラウザーに送信します。バイト配列をwrite
メソッドに渡します。
関連トピック
Web サービス API を使用したクライアントでのフォームのレンダリング render-a-form-at-the-client-using-the-web-service-api
Forms API(Webサービス)を使用して、クライアントでフォームをレンダリングするには:
-
プロジェクトファイルを含める
- Forms Service WSDL を使用する Java プロキシクラスを作成します。
- Java プロキシクラスをクラスパスに含めます。
-
Forms Client API オブジェクトの作成
FormsService
オブジェクトを作成して、認証値を設定します。 -
クライアントレンダリング実行時オプションを設定する
- コンストラクタを使用して
PDFFormRenderSpec
オブジェクトを作成します。 RenderAtClient
実行時オプションを設定するには、PDFFormRenderSpec
オブジェクトのsetRenderAtClient
メソッドを呼び出し、文字列値RenderAtClient.Yes
を渡します。
- コンストラクタを使用して
-
クライアントでフォームをレンダリングする
FormsService
オブジェクトのrenderPDFForm
メソッドを呼び出し、次の値を渡します。- フォームデザイン名を指定する文字列値で、ファイル名の拡張子も含まれます。Forms アプリケーションの一部であるフォームデザインを参照する場合は、必ず次のような完全なパスを指定してください。
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
- フォームと結合するデータを含む
BLOB
オブジェクトです。データを結合しない場合は、null
を渡します。(流動レイアウトによるフォームの事前入力を参照してください)。 - クライアントでフォームのレンダリングに必要な実行時オプションを格納する
PDFFormRenderSpec
オブジェクトです。 - 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 ブラウザーに書き込む必要のあるフォームデータストリームを入力します。 - フォームデザイン名を指定する文字列値で、ファイル名の拡張子も含まれます。Forms アプリケーションの一部であるフォームデザインを参照する場合は、必ず次のような完全なパスを指定してください。
-
フォームデータストリームをクライアント 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
メソッドに渡します。
関連トピック
Base64 エンコーディングを使用した AEM Forms の呼び出し