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

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

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

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

メモ

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

手順の概要

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

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

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

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

Forms Client 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. DesignerでシードPDFファイルを作成する場合は、少なくともメッセージを含むテキストフィールドを追加することをお勧めします。 このメッセージは、Adobe Readerの以前のバージョンのユーザーに対し、ドキュメントを表示するにはAcrobat 7.0以降またはAdobe Reader 7.0以降が必要であることを示すものにする必要があります。
  3. シードPDFファイルを、PDFファイル名拡張子を持つダイナミックPDFファイルとして保存します。
メモ

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

クライアントでのフォームのレンダリング

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

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

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

関連トピック

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

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

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

接続プロパティの設定

FormsサービスAPIのクイックスタート

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

Forms

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

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

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

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

  2. Forms Client APIオブジェクトの作成

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

    • コンストラクタを使用して PDFFormRenderSpec オブジェクトを作成します。
    • PDFFormRenderSpecオブジェクトのsetRenderAtClientメソッドを呼び出し、列挙値RenderAtClient.Yesを渡すことで、RenderAtClient実行時オプションを設定します。
  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オブジェクトのgetOutputContentメソッドを呼び出して、com.adobe.idp.Documentオブジェクトを作成します。
    • getContentTypeメソッドを呼び出して、com.adobe.idp.Documentオブジェクトのコンテンツタイプを取得します。
    • setContentTypeメソッドを呼び出し、com.adobe.idp.Documentオブジェクトのコンテンツタイプを渡すことで、javax.servlet.http.HttpServletResponseオブジェクトのコンテンツタイプを設定します。
    • 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を使用してクライアントでフォームをレンダリングする

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

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

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

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

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

    • コンストラクタを使用して PDFFormRenderSpec オブジェクトを作成します。
    • PDFFormRenderSpecオブジェクトのsetRenderAtClientメソッドを呼び出し、文字列値RenderAtClient.Yesを渡すことで、RenderAtClientランタイムオプションを設定します。
  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オブジェクトのコンテンツタイプを取得します。
    • setContentTypeメソッドを呼び出し、BLOBオブジェクトのコンテンツタイプを渡すことで、javax.servlet.http.HttpServletResponseオブジェクトのコンテンツタイプを設定します。
    • javax.servlet.http.HttpServletResponseオブジェクトのgetOutputStreamメソッドを呼び出して、フォームデータストリームをクライアントWebブラウザーに書き込むためのjavax.servlet.ServletOutputStreamオブジェクトを作成します。
    • バイト配列を作成し、BLOBオブジェクトのgetBinaryDataメソッドを呼び出してそれを設定します。 このタスクは、FormsResultオブジェクトの内容をバイト配列に割り当てます。
    • javax.servlet.http.HttpServletResponseオブジェクトのwriteメソッドを呼び出して、フォームデータストリームをクライアントWebブラウザーに送信します。 writeメソッドにバイト配列を渡します。

関連トピック

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

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

このページ