Forms サービスにドキュメントを渡す passing-documents-to-the-formsservice
このドキュメントのサンプルと例は、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 サービスに渡す利点は、他のサービス操作が com.adobe.idp.Document インスタンスを返すことです。つまり、別のサービス操作から com.adobe.idp.Document インスタンスを取得し、レンダリングできます。例えば、(次の図に示すように)XDP ファイルが /Company Home/Form Designs という名前のコンテンツサービス(非推奨)ノードに格納されているとします。
プログラムによってコンテンツサービス(非推奨)から Loan.xdp を取得し、XDP ファイルを com.adobe.idp.Document オブジェクト内で Forms サービスに渡します。
手順の概要 summary-of-steps
コンテンツサービス(非推奨)から取得したドキュメントを Forms サービスに渡すには、次のタスクを実行します。
- プロジェクトファイルを含めます。
- Forms と Document Management Client API オブジェクトを作成します。
- コンテンツサービス(非推奨)からフォームデザインを取得します。
- インタラクティブ PDF フォームをレンダリングします。
- フォームデータストリームを使用してアクションを実行します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを含めます。
Forms と Document Management Client API オブジェクトの作成
プログラムで Forms Service API 操作を実行する前に、Forms Client API オブジェクトを作成します。また、このワークフローはコンテンツサービス(非推奨)から XDP ファイルを取得するため、Document Management API オブジェクトを作成します。
コンテンツサービス(非推奨)からフォームデザインを取得する
Java または web サービス API を使用して、コンテンツサービス(非推奨)から XDP ファイルを取得します。XDP ファイルは、com.adobe.idp.Document インスタンス 内(または web サービスを使用する場合は BLOB インスタンス)で返されます。その後、 Forms サービスに com.adobe.idp.Document インスタンスを渡します。
インタラクティブ PDF フォームのレンダリング
インタラクティブフォームをレンダリングするには、コンテンツサービス(非推奨)から返された com.adobe.idp.Document インスタンスを Forms サービスに渡します。
com.adobe.idp.Document を Forms サービスに渡します。renderPDFForm2 および renderHTMLForm2 という名前の 2 つの新しいメソッドは、フォームデザインを含む com.adobe.idp.Document オブジェクトを受け入れます。フォームデータストリームを使用してアクションを実行
クライアントアプリケーションの種類に応じて、フォームをクライアント web ブラウザーに書き込んだり、フォームを PDF ファイルとして保存したりできます。通常、web ベースのアプリケーションは、フォームを web ブラウザーに書き込みます。ただし、デスクトップアプリケーションは通常フォームを PDF ファイルとして保存します。
関連トピック
Java API を使用して Forms サービスにドキュメントを渡す pass-documents-to-the-forms-service-using-the-java-api
Forms サービスとコンテンツサービス(非推奨)API (Java) を使用して、コンテンツサービス(非推奨)から取得したドキュメントを渡します。
-
プロジェクトファイルを含める
adobe-forms-client.jar やadobe-contentservices-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
Forms と Document Management Client API オブジェクトの作成
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。(接続プロパティの設定を参照) - コンストラクターを使用して
ServiceClientFactoryオブジェクトを渡すことによって、FormsServiceClientオブジェクトを作成します。 - コンストラクタを使用して
DocumentManagementServiceClientImplオブジェクトを渡すことによって、ServiceClientFactoryオブジェクトを作成します。
- 接続プロパティを含む
-
コンテンツサービス(非推奨)からフォームデザインを取得する
DocumentManagementServiceClientImplオブジェクトのretrieveContentメソッドを呼び出して、次の値を渡します。- コンテンツの追加先となるストアを指定する文字列値です。デフォルトのストアは
SpacesStoreです。この値は必須パラメーターです。 - 取得するコンテンツの完全修飾パスを指定する文字列値(例:
/Company Home/Form Designs/Loan.xdp)。この値は必須パラメーターです。 - バージョンを指定する文字列値。この値はオプションのパラメーターであり、空の文字列を渡すことができます。この場合、最新バージョンが取得されます。
retrieveContentメソッドは、XDP ファイルを含むCRCResultオブジェクトを返します。CRCResultオブジェクトのgetDocumentメソッドを呼び出して、com.adobe.idp.Documentインスタンスを取得します。 - コンテンツの追加先となるストアを指定する文字列値です。デフォルトのストアは
-
インタラクティブ PDF フォームのレンダリング
FormsServiceClientオブジェクトのrenderPDFForm2メソッドを呼び出して、次の値を渡します。- コンテンツサービス(非推奨)から取得したフォームデザインを含む
com.adobe.idp.Documentオブジェクトです。 - フォームに結合するデータを含む
com.adobe.idp.Documentオブジェクトです。データを結合しない場合は、空のcom.adobe.idp.Documentオブジェクトを渡します。 - 実行時オプションを保存する
PDFFormRenderSpecオブジェクト。この値はオプションのパラメーターであり、実行時のオプションを指定しない場合は、nullを指定できます。 - URI 値を格納する
URLSpecオブジェクト。この値はオプションのパラメーターであり、nullを指定できます。 - 添付ファイルを保存する
java.util.HashMapオブジェクト。この値はオプションのパラメーターであり、フォームにファイルを添付しない場合は、nullを指定できます。
この
renderPDFFormメソッドは、クライアントの web ブラウザーに書き込む必要があるフォームデータストリームを含むFormsResultオブジェクトを返します。 - コンテンツサービス(非推奨)から取得したフォームデザインを含む
-
フォームデータストリームを使用してアクションを実行
FormsResultオブジェクトの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メソッドに渡します。
関連トピック
Web サービス API を使用してドキュメントを Forms サービスに渡す pass-documents-to-the-forms-service-using-the-web-service-api
Forms サービスおよびコンテンツサービス(非推奨) API(web サービス)を使用してコンテンツサービス(非推奨)から取得したドキュメントを渡すには、以下の手順を実行します。
-
プロジェクトファイルを含める
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インスタンスは完全に修飾されています。note note NOTE localhostを AEM Forms をホストしているサーバーの IP アドレスに置き換えます。 -
Forms と Document Management Client API オブジェクトの作成
-
デフォルトのコンストラクターを使用して
FormsServiceClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用してFormsServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を 指定する文字列値を AEM Forms サービスに渡します(例: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フィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。
-
フィールド
BasicHttpBindingSecurity.Security.Modeに定数値BasicHttpSecurityMode.TransportCredentialOnlyを割り当てます。
note note NOTE DocumentManagementServiceClientサービスクライアント向けに、以下の手順を繰り返します。 -
-
コンテンツサービス(非推奨)からフォームデザインを取得する
DocumentManagementServiceClientオブジェクトのretrieveContentメソッドを呼び出し、以下の値を渡してコンテンツを取得します。- コンテンツの追加先となるストアを指定する文字列値です。デフォルトのストアは
SpacesStoreです。この値は必須パラメーターです。 - 取得するコンテンツの完全修飾パスを指定する文字列値(例:
/Company Home/Form Designs/Loan.xdp)。この値は必須パラメーターです。 - バージョンを指定する文字列値。この値はオプションのパラメーターであり、空の文字列を渡すことができます。この場合、最新バージョンが取得されます。
- 参照リンクの値を格納する文字列出力パラメーター。
- コンテンツを格納する
BLOB出力パラメーター。この出力パラメーターを使用して、コンテンツを取得できます。 - コンテンツ属性を格納する
ServiceReference1.MyMapOf_xsd_string_To_xsd_anyType出力パラメーター。 CRCResult出力パラメーター。このオブジェクトを使用する代わりに、BLOB出力パラメーターを使用して、コンテンツを取得できます。
- コンテンツの追加先となるストアを指定する文字列値です。デフォルトのストアは
-
インタラクティブ PDF フォームのレンダリング
FormsServiceClientオブジェクトのrenderPDFForm2メソッドを呼び出して、次の値を渡します。- コンテンツサービス(非推奨)から取得したフォームデザインを含む
BLOBオブジェクトです。 - フォームに結合するデータを含む
BLOBオブジェクトです。データを結合しない場合は、空のBLOBオブジェクトを渡します。 - 実行時オプションを保存する
PDFFormRenderSpecオブジェクト。この値はオプションのパラメーターであり、実行時のオプションを指定しない場合は、nullを指定できます。 - URI 値を格納する
URLSpecオブジェクト。この値はオプションのパラメーターであり、nullを指定できます。 - 添付ファイルを保存する
Mapオブジェクト。この値はオプションのパラメーターで、フォームにファイルを添付しない場合は、nullを指定できます。 - ページ数の保存に使用される長い出力パラメーターです。
- ロケール値の格納に使用される文字列出力パラメーターです。
- インタラクティブ PDF フォーム
.の保存に使用するFormsResult出力パラメーター
renderPDFForm2メソッドは、インタラクティブ PDF フォームを含むFormsResultオブジェクトを返します。 - コンテンツサービス(非推奨)から取得したフォームデザインを含む
-
フォームデータストリームを使用してアクションを実行
FormsResultオブジェクトのoutputContentフィールドの値を取得して、フォームデータを含むBLOBオブジェクトを作成します。- コンストラクターを呼び出して
System.IO.FileStreamオブジェクトを作成します。インタラクティブ PDF ドキュメントのファイルの場所と、ファイルを開くモードを表す文字列値を渡します。 FormsResultオブジェクトから取得したBLOBオブジェクトのコンテンツを格納するバイト配列を作成します。バイト配列を入力するには、BLOBオブジェクトのMTOMデータメンバーの値を取得します。- コンストラクターを使用して
System.IO.BinaryWriterオブジェクトを渡すことによって、System.IO.FileStreamオブジェクトを作成します。 System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出して、バイト配列を渡すことによって、バイト配列の内容を PDF ファイルに書き込みます。
関連トピック