ユーザーがインタラクティブフォームに入力できるWebベースのアプリケーションでは、データをサーバーに送信し直す必要があります。 Formsサービスを使用すると、ユーザーがインタラクティブフォームに入力したフォームデータを取得できます。 次に、フォームデータを別のAEM Formsサービス操作に渡し、そのデータを使用してPDFドキュメントを作成できます。
この内容を読む前に、送信済みフォームの処理に関する十分な理解を得ることをお勧めします。 フォームデザインと送信されたXMLデータの関係などの概念については、「送信されたFormsの処理」を参照してください。
3つのAEM Formsサービスを含む次のワークフローについて考えてみましょう。
次の図に、このワークフローを視覚的に示します。
ユーザーがクライアントWebブラウザーからフォームを送信した後、非インタラクティブPDFドキュメントがContent Services(非推奨)に保存されます。 次の図に、Content Services(非推奨)に保存されているPDFドキュメントを示します。
送信されたXMLデータを含む非インタラクティブPDFドキュメントを作成し、Content Services(非推奨)のPDFドキュメントに保存するには、次のタスクを実行します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用している場合は、プロキシファイルを必ず含めてください。
Forms、出力、ドキュメント管理の各オブジェクトの作成
プログラムでFormsサービスAPI操作を実行する前に、FormsクライアントAPIオブジェクトを作成します。 同様に、このワークフローはOutputおよびドキュメント管理サービスを呼び出すので、Output Client APIオブジェクトとドキュメント管理クライアントAPIオブジェクトの両方を作成します。
Formsサービスを使用したフォームデータの取得
Formsサービスに送信されたフォームデータを取得します。 送信されたデータを処理して、ビジネス要件に合わせることができます。 例えば、フォームデータをエンタープライズデータベースに格納できます。 ただし、非インタラクティブPDFドキュメントを作成する場合は、フォームデータがOutputサービスに渡されます。
Outputサービスを使用して、非インタラクティブPDFドキュメントを作成します。
Outputサービスを使用して、フォームデザインとXMLフォームデータに基づく非インタラクティブPDFドキュメントを作成します。 ワークフローでは、フォームデータがFormsサービスから取得されます。
ドキュメント管理サービスを使用して、PDFフォームをContent Services(非推奨)に格納する
Content Services(非推奨)にPDFドキュメントを格納するには、ドキュメント管理サービスAPIを使用します。
関連トピック
Forms、出力、ドキュメント管理API(Java)を使用して、送信されたXMLデータを使用してPDFドキュメントを作成します。
プロジェクトファイルを含める
Javaプロジェクトのクラスパスに、adobe-forms-client.jar、adobe-output-client.jar、adobe-contentservices-client.jarなどのクライアントJARファイルを含めます。
Forms、出力、ドキュメント管理の各オブジェクトの作成
ServiceClientFactory
オブジェクトを作成します。FormsServiceClient
オブジェクトを渡すことによって、ServiceClientFactory
オブジェクトを作成します。OutputClient
オブジェクトを渡して、ServiceClientFactory
オブジェクトを作成します。DocumentManagementServiceClientImpl
オブジェクトを渡すことによって、ServiceClientFactory
オブジェクトを作成します。Formsサービスを使用したフォームデータの取得
FormsServiceClient
オブジェクトのprocessFormSubmission
メソッドを呼び出し、次の値を渡します。
com.adobe.idp.Document
オブジェクト。CONTENT_TYPE
に1つ以上の値を指定して、処理するコンテンツタイプを指定します。 例えば、XMLデータを処理するには、このパラメーターに次の文字列値を指定します。CONTENT_TYPE=text/xml
.HTTP_USER_AGENT
ヘッダー値を指定するstring値(Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
など)。RenderOptionsSpec
オブジェクト。processFormSubmission
メソッドは、フォーム送信の結果を含むFormsResult
オブジェクトを返します。
FormsResult
オブジェクトのgetAction
メソッドを呼び出して、Formsサービスがフォームデータの処理を完了したかどうかを判断します。 このメソッドが値0
を返す場合、データは処理の準備ができています。
FormsResult
オブジェクトのgetOutputContent
メソッドを呼び出してcom.adobe.idp.Document
オブジェクトを作成し、フォームデータを取得します。 (このオブジェクトには、Outputサービスに送信できるフォームデータが含まれます)。
java.io.DataInputStream
コンストラクターを呼び出し、com.adobe.idp.Document
オブジェクトを渡して、java.io.InputStream
オブジェクトを作成します。
静的org.w3c.dom.DocumentBuilderFactory
オブジェクトのnewInstance
メソッドを呼び出して、org.w3c.dom.DocumentBuilderFactory
オブジェクトを作成します。
org.w3c.dom.DocumentBuilderFactory
オブジェクトのnewDocumentBuilder
メソッドを呼び出して、org.w3c.dom.DocumentBuilder
オブジェクトを作成します。
org.w3c.dom.DocumentBuilder
オブジェクトのparse
メソッドを呼び出し、java.io.InputStream
オブジェクトを渡して、org.w3c.dom.Document
オブジェクトを作成します。
XMLドキュメント内の各ノードの値を取得します。 このタスクを実行する1つの方法は、2つのパラメーターを受け取るカスタムメソッドを作成することです。org.w3c.dom.Document
オブジェクトと、値を取得するノードの名前。 このメソッドは、ノードの値を表すstring値を返します。 このプロセスの後のコード例では、このカスタムメソッドはgetNodeText
と呼ばれます。 このメソッドの本文が表示されます。
Outputサービスを使用して、非インタラクティブPDFドキュメントを作成します。
OutputClient
オブジェクトのgeneratePDFOutput
メソッドを呼び出し、次の値を渡してPDFドキュメントを作成します。
TransformationFormat
列挙値。 PDFドキュメントを生成するには、TransformationFormat.PDF
を指定します。PDFOutputOptionsSpec
オブジェクト。RenderOptionsSpec
オブジェクト。com.adobe.idp.Document
オブジェクトです。 このオブジェクトがFormsResult
オブジェクトのgetOutputContent
メソッドによって返されたことを確認します。generatePDFOutput
メソッドは、操作の結果を含むOutputResult
オブジェクトを返します。OutputResult
オブジェクトのgetGeneratedDoc
メソッドを呼び出して、非インタラクティブPDFドキュメントを取得します。 このメソッドは、非インタラクティブPDFドキュメントを表すcom.adobe.idp.Document
インスタンスを返します。ドキュメント管理サービスを使用したContent Services(非推奨)へのPDFフォームの保存
DocumentManagementServiceClientImpl
追加オブジェクトのstoreContent
メソッドを呼び出し、次の値を渡すことで、内容を指定します。
SpacesStore
です。 この値は必須のパラメータです。/Company Home/Test Directory
)。 この値は必須のパラメータです。MortgageForm.pdf
)。 この値は必須のパラメータです。{https://www.alfresco.org/model/content/1.0}content
を指定します。 この値は必須のパラメータです。com.adobe.idp.Document
オブジェクト。 この値は必須のパラメータです。UTF-8
)。 この値は必須のパラメータです。UpdateVersionType
定義済みリスト値(例えば、UpdateVersionType.INCREMENT_MAJOR_VERSION
でコンテンツバージョンを増やします)。 )この値は必須パラメータです。java.util.List
インスタンス。 この値はオプションのパラメーターで、null
を指定できます。java.util.Map
オブジェクト。storeContent
メソッドは、内容を記述するCRCResult
オブジェクトを返します。 CRCResult
オブジェクトを使用して、例えば、コンテンツの固有な識別子の値を取得できます。 このタスクを実行するには、CRCResult
オブジェクトのgetNodeUuid
メソッドを呼び出します。
関連トピック