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

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

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

メモ

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

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

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

次の図は、このワークフローを視覚的に表したものです。

cd_cd_finsrv_architecture_xml_pdf1

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

cd_cd_cs_gui

手順の概要

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

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

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

必要なファイルを開発プロジェクトに含めます。 Javaを使用してクライアントアプリケーションを作成する場合は、必要なJARファイルを含めます。 Webサービスを使用する場合は、プロキシファイルを必ず含めてください。

Forms、OutputおよびDocument Managementオブジェクトの作成

プログラムでForms Service API操作を実行する前に、Forms Client APIオブジェクトを作成します。 同様に、このワークフローはOutputサービスとDocument Managementサービスを呼び出すので、Output Client APIオブジェクトとDocument Management Client APIオブジェクトの両方を作成します。

Formsサービスを使用したフォームデータの取得

Formsサービスに送信されたフォームデータを取得します。 送信されたデータを処理して、ビジネス要件を満たすことができます。 例えば、フォームデータをエンタープライズデータベースに格納できます。 ただし、非インタラクティブPDFドキュメントを作成する場合は、フォームデータがOutputサービスに渡されます。

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

Outputサービスを使用して、フォームデザインとXMLフォームデータに基づく非インタラクティブPDFドキュメントを作成します。 ワークフローでは、フォームデータはFormsサービスから取得されます。

Document Managementサービスを使用して、PDFフォームをContent Services(非推奨)に格納します

PDFドキュメントをContent Services(非推奨)に保存するには、Document ManagementサービスAPIを使用します。

関連トピック

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

接続プロパティの設定

FormsサービスAPIのクイックスタート

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

Forms、Output、およびDocument Management API(Java)を使用して、送信されたXMLデータを含むPDFドキュメントを作成します。

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

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

  2. Forms、OutputおよびDocument Managementオブジェクトの作成

    • 接続プロパティを含む 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オブジェクトと、値を取得するノードの名前。 このメソッドは、ノードの値を表す文字列値を返します。 このプロセスに続くコード例では、このカスタムメソッドを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. Document Managementサービスを使用して、PDFフォームをContent Services(非推奨)に格納します

    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 ライブラリファイルを含める

接続プロパティの設定

このページ