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

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

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

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

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

メモ

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

手順の概要

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

  1. プロジェクトファイルを含めます。
  2. Formsおよびドキュメント管理クライアントAPIオブジェクトを作成します。
  3. Content Services(非推奨)からフォームデザインを取得します。
  4. インタラクティブPDFフォームをレンダリングします。
  5. フォームデータストリームでアクションを実行します。

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

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

Formsとドキュメント管理クライアントAPIオブジェクトの作成

プログラムでFormsサービスAPI操作を実行する前に、FormsクライアントAPIオブジェクトを作成します。 また、このワークフローはContent Services(非推奨)からXDPファイルを取得するので、ドキュメント管理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サービスに渡すことができます。 renderPDFForm2renderHTMLForm2という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とドキュメント管理クライアント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オブジェクト'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を使用してFormsサービスにドキュメントを渡す

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.

    ドキュメント管理サービスに関連付けられたサービス参照に対して、次のWSDL定義を使用します。http://localhost:8080/soap/services/DocumentManagementService?WSDL&lc_version=9.0.1.

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

    メモ

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

  2. Formsとドキュメント管理クライアントAPIオブジェクトの作成

    • FormsServiceClientオブジェクトを作成するには、そのデフォルトのコンストラクタを使用します。

    • System.ServiceModel.EndpointAddressコンストラクターを使用してFormsServiceClient.Endpoint.Addressオブジェクトを作成します。 WSDLをAEM Formsサービスに指定する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認証を有効にします。

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

    メモ

    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の呼び出し

このページ

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