クライアントでのFormsのレンダリング

このドキュメントのサンプルと例は、JEE環境上のAEM Formsに対してのみ提供されています。

クライアントでのFormsのレンダリング

AcrobatまたはAdobe Readerのクライアント側レンダリング機能を使用すると、PDFコンテンツの配信を最適化し、Formsサービスのネットワーク負荷を処理する機能を向上できます。 このプロセスは、クライアントでのフォームのレンダリングと呼ばれます。 クライアントでフォームをレンダリングするには、クライアントデバイス(通常はWebブラウザー)でAcrobat 7.0またはAdobe Reader7.0以降を使用する必要があります。

サーバーサイドのスクリプトの実行によって生じるフォームへの変更は、ルートサブフォームにautoに設定されたrestoreState属性が含まれていない限り、クライアントでレンダリングされるフォームには反映されません。 この属性について詳しくは、「Formsデザイナー」を参照してください。

メモ

Formsサービスの詳細については、『AEM Formsのサービスリファレンス』を参照してください。

手順の概要

クライアントでフォームをレンダリングするには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. FormsクライアントAPIオブジェクトを作成します。
  3. クライアントレンダリングの実行時オプションを設定します。
  4. クライアントでフォームをレンダリングします。
  5. クライアントのWebブラウザーにフォームを書き込みます。

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

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

FormsクライアントAPIオブジェクトの作成

プログラムでFormsサービスのクライアントAPI操作を実行する前に、Formsサービスクライアントを作成する必要があります。 Java APIを使用している場合は、FormsServiceClientオブジェクトを作成します。 FormsのWebサービスAPIを使用している場合は、FormsServiceオブジェクトを作成します。

クライアントレンダリングの実行時オプションの設定

RenderAtClient実行時オプションをtrueに設定して、クライアントでフォームをレンダリングするようにクライアントレンダリングの実行時オプションを設定する必要があります。 これにより、フォームがレンダリングされるクライアントデバイスにフォームが配信されます。 RenderAtClientauto(デフォルト値)の場合、フォームデザインによって、フォームがクライアントでレンダリングされるかどうかが決まります。 フォームデザインは、編集可能なレイアウトを含むフォームデザインである必要があります。

オプションで設定できるランタイムオプションはSeedPDFオプションです。 SeedPDFオプションは、PDFコンテナ(シードPDFドキュメント)とフォームデザインとXMLデータを組み合わせます。 フォームデザインとXMLデータは共にAcrobatまたはAdobe Readerに配信され、そこでフォームがレンダリングされます。 SeedPDFオプションは、クライアントコンピューターにフォームで使用されるフォントがない場合(フォームの所有者にライセンスされているフォントを使用するライセンスがエンドユーザーにない場合など)に使用できます。

Designerを使用すると、シードPDFファイルとして使用する単純な動的PDFファイルを作成できます。 このタスクを実行するには、次の手順を実行する必要があります。

  1. シードPDFファイル内にフォントを埋め込む必要があるかどうかを指定します。 シードPDFファイルには、レンダリングするフォームに必要な追加のフォントを含める必要があります。 シードPDFファイルにフォントを埋め込む場合は、フォントの使用許諾契約に違反していないことを確認してください。 Designerでは、フォントを法的に埋め込めるかどうかを指定できます。 保存時に、フォームに埋め込むことができないフォントが存在する場合、Designerは埋め込めないフォントを一覧表示したメッセージを表示します。 スタティックPDFドキュメントの場合、このメッセージはDesignerには表示されません。
  2. シードPDFファイルをDesignerで作成する場合は、少なくともメッセージを含むテキストフィールドを追加することをお勧めします。 このメッセージは、ドキュメントの表示にAcrobat 7.0以降またはAdobe Reader7.0以降が必要であるという内容の、Adobe Readerの以前のバージョンのユーザー向けに送信する必要があります。
  3. シードPDFファイルを、PDFファイル名拡張子が付いた動的PDFファイルとして保存します。
メモ

クライアント上でフォームをレンダリングする場合、シードPDFランタイムオプションを定義する必要はありません。 シードPDFを指定しない場合、FormsサービスはCOSオブジェクトは含まず、実際のXDPコンテンツが内部に埋め込まれたPDFラッパーを含むシェルPDFを作成します。 この節の手順では、シードPDFの実行時オプションを設定しません。 COSオブジェクトの詳細については、『Adobe PDFリファレンス』マニュアルを参照してください。

クライアントでフォームをレンダリングする

クライアントでフォームをレンダリングするには、フォームをレンダリングするアプリケーションロジックにクライアントレンダリングの実行時オプションが含まれていることを確認する必要があります。

フォームデータストリームをクライアントのWebブラウザーに書き込みます

Formsサービスはフォームデータストリームを作成します。このデータストリームは、クライアントのWebブラウザーに書き込む必要があります。 クライアントWebブラウザーに書き込むと、フォームはAcrobat 7.0またはAdobe Reader7.0以降でレンダリングされ、ユーザーに表示されます。

関連トピック

Java APIを使用してクライアントでフォームをレンダリングする

WebサービスAPIを使用してクライアントでフォームをレンダリングする

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

接続プロパティの設定

FormsサービスAPIクイック開始

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

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

Java APIを使用してクライアントでフォームをレンダリングする

FormsAPI(Java)を使用して、クライアントでフォームをレンダリングします。

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

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

  2. FormsクライアントAPIオブジェクトの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用し、FormsServiceClientオブジェクトを渡して、ServiceClientFactoryオブジェクトを作成します。
  3. クライアントレンダリングの実行時オプションの設定

    • コンストラクタを使用して PDFFormRenderSpec オブジェクトを作成します。
    • RenderAtClient実行時オプションを設定するには、PDFFormRenderSpecオブジェクトのsetRenderAtClientメソッドを呼び出し、列挙値RenderAtClient.Yesを渡します。
  4. クライアントでフォームをレンダリングする

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

    • ファイル名拡張子を含むフォームデザイン名を指定するstring値。 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オブジェクトを返します。

  5. フォームデータストリームをクライアントのWebブラウザーに書き込みます

    • FormsResultオブジェクト's 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を使用したクライアントでのフォームのレンダリング

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

接続プロパティの設定

WebサービスAPIを使用して、クライアントでフォームをレンダリングする

FormsAPI(Webサービス)を使用して、クライアントでフォームをレンダリングします。

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

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

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

  3. クライアントレンダリングの実行時オプションの設定

    • コンストラクタを使用して PDFFormRenderSpec オブジェクトを作成します。
    • RenderAtClient実行時オプションを設定するには、PDFFormRenderSpecオブジェクトのsetRenderAtClientメソッドを呼び出し、文字列値RenderAtClient.Yesを渡します。
  4. クライアントでフォームをレンダリングする

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

    • ファイル名拡張子を含むフォームデザイン名を指定するstring値。 Formsアプリケーションの一部であるフォームデザインを参照する場合は、Applications/FormsApplication/1.0/FormsFolder/Loan.xdpなど、完全なパスを必ず指定してください。
    • フォームとマージするデータを含むBLOBオブジェクト。 データを結合したくない場合は、nullを渡します。 (「編集可能なレイアウトでFormsを自動埋め込む」を参照)。
    • クライアントでフォームをレンダリングするために必要な実行時オプションを格納する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ブラウザーに書き込む必要のあるフォームデータストリームを入力します。

  5. フォームデータストリームをクライアントの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メソッドに渡します。

関連トピック

クライアントでのFormsのレンダリング

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

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now