このドキュメントのサンプルと例は、JEE 環境の AEM Forms のみを対象としています。
Acrobat や Adobe Reader のクライアントサイドレンダリング機能を利用して、PDF コンテンツの配信を最適化し、Forms サービスのネットワーク負荷への対応力を向上させることができます。この処理をクライアントでのレンダリングといいます。クライアントでフォームをレンダリングするには、クライアントデバイス(通常は web ブラウザー)が Acrobat 7.0 または Adobe Reader 7.0 以降を使用している必要があります。
サーバーサイドのスクリプト実行によるフォームの変更は、ルートサブフォームに restoreState
属性が auto
に設定されていない限り、クライアントで表示されるフォームには反映されません。この属性の詳細情報については、Forms Designer を参照してください。
AEM Forms サービスについて詳しくは、Forms 用サービスリファレンスを参照してください。
クライアントでフォームをレンダリングするには、以下の作タスクを実行します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。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 を指定しない場合、Forms サービスは、COS オブジェクトを含まないシェル PDF を作成しますが、これは実際の XDP のコンテンツを内部に埋め込んだ PDF ラッパーを含んでいます。この節の手順では、シード PDF 実行時オプションは設定しません。COS オブジェクトについては、Adobe PDF リファレンスガイドを参照してください。
クライアントでフォームをレンダリング
クライアントでフォームをレンダリングするには、クライアントレンダリングの実行時オプションが、フォームをレンダリングするアプリケーションロジックに含まれていることを確認する必要があります。
フォームデータストリームをクライアントの web ブラウザーに書き込む
Forms サービスは、クライアントの web ブラウザーに書き込むフォームデータストリームを作成します。クライアントの web ブラウザーに書き込まれると、フォームは Acrobat 7.0 または Adobe Reader 7.0 以降でレンダリングされ、ユーザーに対して表示されます。
関連トピック
Java API を使用したクライアントでのフォームのレンダリング
Web サービス API を使用したクライアントでのフォームのレンダリング
Forms をレンダリングする web アプリケーションの作成
Forms API (Java) を使用して、クライアントでフォームをレンダリングするには、以下の手順に従います。
プロジェクトファイルを含める
adobe-forms-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
Forms Client API オブジェクトの作成
ServiceClientFactory
オブジェクトを作成します。ServiceClientFactory
オブジェクトを渡し、FormsServiceClient
オブジェクトを作成します。クライアントレンダリング実行時オプションを設定する
PDFFormRenderSpec
オブジェクトを作成します。RenderAtClient
実行時オプションを設定するには、PDFFormRenderSpec
オブジェクトの setRenderAtClient
メソッドを呼び出し、列挙値 RenderAtClient.Yes
を渡します。クライアントでフォームをレンダリングする
FormsServiceClient
オブジェクトの renderPDFForm
メソッドを呼び出し、次の値を渡します。
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
のように完全なパスを指定します。com.adobe.idp.Document
オブジェクトです。データを統合しない場合、空の com.adobe.idp.Document
オブジェクトを渡します。PDFFormRenderSpec
オブジェクトです。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
オブジェクトの read
メソッドを呼び出してバイト配列を引数として渡すことによって、バイト配列を作成してフォームデータストリームを入力します。javax.servlet.ServletOutputStream
オブジェクトの write
メソッドを呼び出して、フォームデータストリームをクライアント web ブラウザーに送信します。バイト配列を write
メソッドに渡します。関連トピック
クイックスタート(SOAP モード):Java API を使ったクライアントでのフォームのレンダリング
Forms API(Webサービス)を使用して、クライアントでフォームをレンダリングするには:
プロジェクトファイルを含める
Forms Client API オブジェクトの作成
FormsService
オブジェクトを作成して、認証値を設定します。
クライアントレンダリング実行時オプションを設定する
PDFFormRenderSpec
オブジェクトを作成します。RenderAtClient
実行時オプションを設定するには、PDFFormRenderSpec
オブジェクトの setRenderAtClient
メソッドを呼び出し、文字列値 RenderAtClient.Yes
を渡します。クライアントでフォームをレンダリングする
FormsService
オブジェクトの renderPDFForm
メソッドを呼び出し、次の値を渡します。
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp
BLOB
オブジェクトです。データを結合しない場合は、null
を渡します。(流動レイアウトによるフォームの事前入力を参照してください)。PDFFormRenderSpec
オブジェクトです。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
メソッドに渡します。関連トピック