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ファイルを渡すことができます。

NOTE

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サービスに渡します。

NOTE

フォームデザインを含む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インスタンスが完全修飾されます。

    NOTE

    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に割り当てます。

    NOTE

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

このページ