送信されたXMLデータを使用したPDFドキュメントの作成

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

送信されたXMLデータを使用したPDFドキュメントの作成

ユーザーがインタラクティブフォームに入力できるWebベースのアプリケーションでは、データをサーバーに送信し直す必要があります。 Formsサービスを使用すると、ユーザーがインタラクティブフォームに入力したフォームデータを取得できます。 次に、フォームデータを別のAEM Formsサービス操作に渡し、そのデータを使用してPDFドキュメントを作成できます。

メモ

この内容を読む前に、送信済みフォームの処理に関する十分な理解を得ることをお勧めします。 フォームデザインと送信されたXMLデータの関係などの概念については、「送信されたFormsの処理」を参照してください。

3つのAEM Formsサービスを含む次のワークフローについて考えてみましょう。

  • ユーザーは、XMLデータをWebベースのアプリケーションからFormsサービスに送信します。
  • Formsサービスは、送信されたフォームの処理とフォームフィールドの抽出に使用されます。 フォームデータを処理できます。 例えば、データをエンタープライズデータベースに送信できます。
  • フォームデータは、非インタラクティブPDFドキュメントを作成するためにOutputサービスに送信されます。
  • 非インタラクティブPDFドキュメントは、Content Services(非推奨)に保存されます。

次の図に、このワークフローを視覚的に示します。

cd_cd_finsrv_architecture_xml_pdf1

ユーザーがクライアントWebブラウザーからフォームを送信した後、非インタラクティブPDFドキュメントがContent Services(非推奨)に保存されます。 次の図に、Content Services(非推奨)に保存されているPDFドキュメントを示します。

cd_cd_cs_gui

手順の概要

送信されたXMLデータを含む非インタラクティブPDFドキュメントを作成し、Content Services(非推奨)のPDFドキュメントに保存するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. Forms、出力、ドキュメント管理の各オブジェクトを作成します。
  3. Formsサービスを使用してフォームデータを取得します。
  4. Outputサービスを使用して、非インタラクティブPDFドキュメントを作成します。
  5. ドキュメント管理サービスを使用して、PDFフォームをContent Services(非推奨)に格納します。

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

必要なファイルを開発プロジェクトに含めます。 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を使用します。

関連トピック

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

FormsサービスAPIクイック開始

Java APIを使用して、送信されたXMLデータを使用してPDFドキュメントを作成します。

Forms、出力、ドキュメント管理API(Java)を使用して、送信されたXMLデータを使用してPDFドキュメントを作成します。

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

    Javaプロジェクトのクラスパスに、adobe-forms-client.jar、adobe-output-client.jar、adobe-contentservices-client.jarなどのクライアントJARファイルを含めます。

  2. Forms、出力、ドキュメント管理の各オブジェクトの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクタを使用して FormsServiceClient オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用し、OutputClientオブジェクトを渡して、ServiceClientFactoryオブジェクトを作成します。
    • コンストラクタを使用して DocumentManagementServiceClientImpl オブジェクトを渡すことによって、ServiceClientFactory オブジェクトを作成します。
  3. Formsサービスを使用したフォームデータの取得

    • FormsServiceClientオブジェクトのprocessFormSubmissionメソッドを呼び出し、次の値を渡します。

      • フォームデータを含むcom.adobe.idp.Documentオブジェクト。
      • 関連するすべてのHTTPヘッダーを含む環境変数を指定するstring値。 環境変数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と呼ばれます。 このメソッドの本文が表示されます。

  4. Outputサービスを使用して、非インタラクティブPDFドキュメントを作成します。

    OutputClientオブジェクトのgeneratePDFOutputメソッドを呼び出し、次の値を渡してPDFドキュメントを作成します。

    • TransformationFormat列挙値。 PDFドキュメントを生成するには、TransformationFormat.PDFを指定します。
    • フォームデザイン名を指定する string 値。フォームデザインが、Formsサービスから取得したフォームデータと互換性があることを確認します。
    • フォームデザインが配置されているコンテンツルートを指定するstring値。
    • PDFランタイムオプションを含むPDFOutputOptionsSpecオブジェクト。
    • レンダリングの実行時オプションを含むRenderOptionsSpecオブジェクト。
    • フォームデザインとマージするデータを含むXMLデータソースが含まれるcom.adobe.idp.Documentオブジェクトです。 このオブジェクトがFormsResultオブジェクトのgetOutputContentメソッドによって返されたことを確認します。
    • generatePDFOutputメソッドは、操作の結果を含むOutputResultオブジェクトを返します。
    • OutputResultオブジェクトのgetGeneratedDocメソッドを呼び出して、非インタラクティブPDFドキュメントを取得します。 このメソッドは、非インタラクティブPDFドキュメントを表すcom.adobe.idp.Documentインスタンスを返します。
  5. ドキュメント管理サービスを使用したContent Services(非推奨)へのPDFフォームの保存

    DocumentManagementServiceClientImpl追加オブジェクトのstoreContentメソッドを呼び出し、次の値を渡すことで、内容を指定します。

    • コンテンツが追加されるストアを指定するstring値です。 デフォルトのストアはSpacesStoreです。 この値は必須のパラメータです。
    • コンテンツが追加されるスペースの完全修飾パスを指定するstring値(例:/Company Home/Test Directory)。 この値は必須のパラメータです。
    • 新しいコンテンツを表すノード名(例:MortgageForm.pdf)。 この値は必須のパラメータです。
    • ノードタイプを指定するstring値。 PDFファイルなど、新しいコンテンツを追加するには、{https://www.alfresco.org/model/content/1.0}contentを指定します。 この値は必須のパラメータです。
    • コンテンツを表すcom.adobe.idp.Documentオブジェクト。 この値は必須のパラメータです。
    • エンコード値を指定するstring値(例:UTF-8)。 この値は必須のパラメータです。
    • バージョン情報の処理方法を指定するUpdateVersionType定義済みリスト値(例えば、UpdateVersionType.INCREMENT_MAJOR_VERSIONでコンテンツバージョンを増やします)。 )この値は必須パラメータです。
    • コンテンツに関連する要素を指定するjava.util.Listインスタンス。 この値はオプションのパラメーターで、nullを指定できます。
    • コンテンツ属性を格納するjava.util.Mapオブジェクト。

    storeContentメソッドは、内容を記述するCRCResultオブジェクトを返します。 CRCResultオブジェクトを使用して、例えば、コンテンツの固有な識別子の値を取得できます。 このタスクを実行するには、CRCResultオブジェクトのgetNodeUuidメソッドを呼び出します。

関連トピック

AEM Forms Java ライブラリファイルを含める

接続プロパティの設定

このページ