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

送信された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 ライブラリファイルを含める

接続プロパティの設定

このページ

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now