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 ファイルに書き込みます。
関連トピック