クライアント側でのフォームのレンダリング 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 の呼び出し