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

このドキュメントのサンプルと例は、JEE上のAEM Forms環境に限られています。

AEM Formsサービスは、ユーザーから情報を収集するために、インタラクティブPDF formsをクライアントデバイス(通常はWebブラウザー)にレンダリングします。 インタラクティブPDFフォームは、通常はXDPファイルとして保存され、Designerで作成されるフォームデザインに基づいています。 AEM Forms以降は、フォームデザインを含むcom.adobe.idp.DocumentオブジェクトをFormsサービスに渡すことができます。 次に、Formsサービスは、com.adobe.idp.Documentオブジェクト内のフォームデザインをレンダリングします。

com.adobe.idp.DocumentオブジェクトをFormsサービスに渡す利点の1つは、他のサービス操作がcom.adobe.idp.Documentインスタンスを返すことです。 つまり、別のサービス操作からcom.adobe.idp.Documentインスタンスを取得してレンダリングできます。 例えば、次の図に示すように、XDPファイルが/Company Home/Form Designsという名前のContent Services(非推奨)ノードに格納されているとします。

プログラムによってContent Services(非推奨)からLoan.xdpを取得し、com.adobe.idp.Documentオブジェクト内でXDPファイルをFormsサービスに渡すことができます。

メモ

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

手順の概要

Content Services(非推奨)から取得したドキュメントをFormsサービスに渡すには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. FormsとDocument Management Client APIオブジェクトを作成します。
  3. Content Services(非推奨)からフォームデザインを取得します。
  4. インタラクティブPDFフォームをレンダリングします。
  5. フォームデータストリームを使用してアクションを実行します。

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

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

FormsとDocument Management Client APIオブジェクトの作成

プログラムでForms Service API操作を実行する前に、Forms Client APIオブジェクトを作成します。 また、このワークフローはContent Services(非推奨)からXDPファイルを取得するので、Document Management APIオブジェクトを作成します。

Content Services(非推奨)からフォームデザインを取得する

JavaまたはWebサービスAPIを使用して、Content Services(非推奨)からXDPファイルを取得します。 XDPファイルは、com.adobe.idp.Documentインスタンス(Webサービスを使用している場合はBLOBインスタンス)内で返されます。 その後、com.adobe.idp.DocumentインスタンスをFormsサービスに渡すことができます。

インタラクティブPDFフォームのレンダリング

インタラクティブフォームをレンダリングするには、Content Services(非推奨)から返されたcom.adobe.idp.DocumentインスタンスをFormsサービスに渡します。

メモ

フォームデザインを含むcom.adobe.idp.DocumentをFormsサービスに渡すことができます。 renderPDFForm2およびrenderHTMLForm2という2つの新しいメソッドは、フォームデザインを含むcom.adobe.idp.Documentオブジェクトを受け取ります。

フォームデータストリームを使用してアクションを実行する

クライアントアプリケーションのタイプに応じて、フォームをクライアントWebブラウザーに書き込むか、フォームをPDFファイルとして保存できます。 通常、Webベースのアプリケーションは、フォームをWebブラウザーに書き込みます。 ただし、デスクトップアプリケーションは通常、フォームをPDFファイルとして保存します。

関連トピック

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

接続プロパティの設定

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

Java APIを使用してFormsサービスにドキュメントを渡す

FormsサービスおよびContent Services(非推奨)API(Java)を使用して、Content Services(非推奨)から取得したドキュメントを渡します。

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

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

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

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。(接続プロパティの設定を参照。)
    • コンストラクターを使用してFormsServiceClientオブジェクトを渡し、ServiceClientFactoryオブジェクトを作成します。
    • コンストラクタを使用して DocumentManagementServiceClientImpl オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. Content Services(非推奨)からフォームデザインを取得する

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

    • コンテンツが追加されるストアを指定するstring値。 デフォルトのストアはSpacesStoreです。 この値は必須のパラメーターです。
    • 取得するコンテンツの完全修飾パスを指定するstring値(例:/Company Home/Form Designs/Loan.xdp)。 この値は必須のパラメーターです。
    • バージョンを指定するstring値。 この値はオプションのパラメーターで、空の文字列を渡すことができます。 この場合、最新バージョンが取得されます。

    retrieveContentメソッドは、XDPファイルを含むCRCResultオブジェクトを返します。 CRCResultオブジェクトのgetDocumentメソッドを呼び出して、com.adobe.idp.Documentインスタンスを取得します。

  4. インタラクティブPDFフォームのレンダリング

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

    • Content Services(非推奨)から取得したフォームデザインを含むcom.adobe.idp.Documentオブジェクト。
    • フォームとマージするデータを含むcom.adobe.idp.Documentオブジェクト。 データを結合しない場合は、空のcom.adobe.idp.Documentオブジェクトを渡します。
    • 実行時オプションを格納するPDFFormRenderSpecオブジェクト。 この値はオプションのパラメーターです。実行時オプションを指定しない場合は、nullを指定できます。
    • URI値を含むURLSpecオブジェクト。 この値はオプションのパラメーターで、nullを指定できます。
    • 添付ファイルを格納するjava.util.HashMapオブジェクト。 この値はオプションのパラメーターです。フォームにファイルを添付しない場合は、nullを指定できます。

    renderPDFFormメソッドは、クライアントのWebブラウザーに書き込む必要があるフォームデータストリームを含むFormsResultオブジェクトを返します。

  5. フォームデータストリームを使用してアクションを実行する

    • 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を使用してForms Serviceにドキュメントを渡す

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

接続プロパティの設定

WebサービスAPIを使用して、ドキュメントをFormsサービスに渡す

FormsサービスおよびContent Services(非推奨)API(Webサービス)を使用して、Content Services(非推奨)から取得したドキュメントを渡します。

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

    MTOMを使用するMicrosoft .NETプロジェクトを作成します。 このクライアントアプリケーションは2つのAEM Formsサービスを呼び出すので、2つのサービス参照を作成します。 Formsサービスに関連付けられたサービス参照に、次のWSDL定義を使用します。http://localhost:8080/soap/services/FormsService?WSDL&lc_version=9.0.1.

    Document Managementサービスに関連付けられたサービス参照に、次のWSDL定義を使用します。http://localhost:8080/soap/services/DocumentManagementService?WSDL&lc_version=9.0.1.

    BLOBデータ型は両方のサービス参照に共通なので、BLOBデータ型を使用する際には完全に修飾します。 対応するWebサービスのクイックスタートでは、すべてのBLOBインスタンスが完全に認定されます。

    メモ

    localhostを、AEM FormsをホストするサーバーのIPアドレスに置き換えます。

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

    • デフォルトのコンストラクターを使用してFormsServiceClientオブジェクトを作成します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してFormsServiceClient.Endpoint.Addressオブジェクトを作成します。 AEM FormsサービスにWSDLを指定するstring値を渡します(例:http://localhost:8080/soap/services/FormsService?WSDL)。 lc_version属性を使用する必要はありません。 この属性は、サービス参照を作成する際に使用されます)。

    • FormsServiceClient.Endpoint.Bindingフィールドの値を取得してSystem.ServiceModel.BasicHttpBindingオブジェクトを作成します。 戻り値を BasicHttpBinding にキャストします。

    • System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。 この値は、MTOMが使用されるようにします。

    • 次のタスクを実行して、基本的なHTTP認証を有効にします。

      • フィールドFormsServiceClient.ClientCredentials.UserName.UserNameにAEM formsユーザー名を割り当てます。
      • 対応するパスワード値をフィールドFormsServiceClient.ClientCredentials.UserName.Passwordに割り当てます。
      • フィールドBasicHttpBindingSecurity.Transport.ClientCredentialTypeに定数値HttpClientCredentialType.Basicを割り当てます。
    • フィールドBasicHttpBindingSecurity.Security.Modeに定数値BasicHttpSecurityMode.TransportCredentialOnlyを割り当てます。

    メモ

    DocumentManagementServiceClientサービスクライアントに対して、この手順を繰り返します。

  3. Content Services(非推奨)からフォームデザインを取得する

    DocumentManagementServiceClientオブジェクトのretrieveContentメソッドを呼び出し、次の値を渡して、コンテンツを取得します。

    • コンテンツが追加されるストアを指定するstring値。 デフォルトのストアはSpacesStoreです。 この値は必須のパラメーターです。
    • 取得するコンテンツの完全修飾パスを指定するstring値(例:/Company Home/Form Designs/Loan.xdp)。 この値は必須のパラメーターです。
    • バージョンを指定するstring値。 この値はオプションのパラメーターで、空の文字列を渡すことができます。 この場合、最新バージョンが取得されます。
    • 参照リンクの値を格納する文字列出力パラメーター。
    • コンテンツを格納するBLOB出力パラメーター。 この出力パラメーターを使用して、コンテンツを取得できます。
    • コンテンツ属性を格納するServiceReference1.MyMapOf_xsd_string_To_xsd_anyType出力パラメーター。
    • CRCResult出力パラメータ。 このオブジェクトを使用する代わりに、 BLOB出力パラメーターを使用してコンテンツを取得できます。
  4. インタラクティブPDFフォームのレンダリング

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

    • Content Services(非推奨)から取得したフォームデザインを含むBLOBオブジェクト。
    • フォームとマージするデータを含むBLOBオブジェクト。 データを結合しない場合は、空のBLOBオブジェクトを渡します。
    • 実行時オプションを格納するPDFFormRenderSpecオブジェクト。 この値はオプションのパラメーターです。実行時オプションを指定しない場合は、nullを指定できます。
    • URI値を含むURLSpecオブジェクト。 この値はオプションのパラメーターで、nullを指定できます。
    • 添付ファイルを格納するMapオブジェクト。 この値はオプションのパラメーターです。フォームにファイルを添付しない場合は、nullを指定できます。
    • ページ数を格納するために使用される長い出力パラメーター。
    • ロケール値の格納に使用される文字列出力パラメーター。
    • インタラクティブPDFフォーム.の保存に使用されるFormsResult出力パラメーター

    renderPDFForm2メソッドは、インタラクティブPDFフォームを含むFormsResultオブジェクトを返します。

  5. フォームデータストリームを使用してアクションを実行する

    • FormsResultオブジェクトのoutputContentフィールドの値を取得して、フォームデータを格納するBLOBオブジェクトを作成します。
    • コンストラクターを呼び出して、System.IO.FileStreamオブジェクトを作成します。 インタラクティブPDFドキュメントのファイルの場所と、ファイルを開くモードを表すstring値を渡します。
    • FormsResultオブジェクトから取得したBLOBオブジェクトの内容を格納するバイト配列を作成します。 BLOBオブジェクトのMTOMデータメンバーの値を取得して、バイト配列を設定します。
    • コンストラクターを呼び出し、System.IO.FileStreamオブジェクトを渡して、System.IO.BinaryWriterオブジェクトを作成します。
    • System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出し、バイト配列を渡すことにより、バイト配列の内容をPDFファイルに書き込みます。

関連トピック

MTOMを使用したAEM Formsの呼び出し

このページ