Formsへの編集可能なレイアウトの事前入力

Formsへの編集可能なレイアウトの事前入力

フォームの自動埋め込みは、レンダリングされたフォーム内のユーザーにデータを表示します。 例えば、ユーザーがユーザー名とパスワードを使用してWebサイトにログインしたとします。 認証が成功した場合、クライアントアプリケーションはデータベースに対してユーザー情報を照会します。 データがフォームにマージされ、フォームがユーザーにレンダリングされます。 その結果、ユーザーはフォーム内のパーソナライズされたデータを表示できます。

フォームの自動埋め込みには次の利点があります。

  • ユーザーがフォーム内にカスタムデータを表示できる.
  • ユーザーがフォームに入力する際に入力する時間を減らします。
  • データを配置する場所を制御できるため、データの整合性を維持できる.

次の2つのXMLデータソースを使用して、フォームを事前入力できます。

  • XDPデータソース。XFA構文に準拠するXMLです(または、Acrobatを使用して作成されたフォームの事前入力用のXFDFデータ)。
  • フォームのフィールド名に一致する名前と値のペアを含む、任意のXMLデータソース(この節の例では、任意のXMLデータソースを使用します)。

事前入力するフォームフィールドごとに、XML要素が存在する必要があります。 XML要素名は、フィールド名と一致する必要があります。 XML要素がフォームフィールドに対応していない場合や、XML要素名がフィールド名と一致しない場合は無視されます。 すべてのXML要素が指定されている限り、XML要素の表示順を一致させる必要はありません。

既にデータを含むフォームを事前入力する場合は、XMLデータソース内に既に表示されているデータを指定する必要があります。 10個のフィールドを含むフォームに4つのフィールドのデータがあるとします。 次に、残りの6つのフィールドに事前入力するとします。 この場合、フォームの事前入力に使用するXMLデータソースに10個のXML要素を指定する必要があります。 6つの要素のみを指定した場合、元の4つのフィールドは空になります。

例えば、サンプルの確認フォームなどのフォームを事前入力できます。 (インタラクティブPDF formsのレンダリングの「確認フォーム」を参照)。

サンプルの確認フォームを事前入力するには、フォーム内の3つのフィールドに一致する3つのXML要素を含むXMLデータソースを作成する必要があります。 このフォームには、次の3つのフィールドが含まれています。FirstNameLastName、およびAmount。 最初の手順は、フォームデザイン内のフィールドと一致するXML要素を含むXMLデータソースを作成することです。 次の手順では、次のXMLコードに示すように、XML要素にデータ値を割り当てます。

     <Untitled>
         <FirstName>Jerry</FirstName>
         <LastName>Johnson</LastName>
         <Amount>250000</Amount>
     </Untitled>

次の図に示すように、確認フォームにこのXMLデータソースを事前入力し、フォームをレンダリングすると、XML要素に割り当てたデータ値が表示されます。

pf_pf_confirmxml3

編集可能なレイアウトを使用したフォームの事前入力

編集可能なレイアウトのFormsは、ユーザーに不明な量のデータを表示する場合に役立ちます。 フォームのレイアウトはマージされるデータ量に合わせて自動的に調整されるので、固定レイアウトのフォームと同様に、フォームの固定レイアウトやページ数を事前に決定する必要はありません。

通常、フォームには実行時に取得されるデータが入力されます。 その結果、メモリ内XMLデータソースを作成し、そのデータをメモリ内XMLデータソースに直接配置することで、フォームの事前入力を行うことができます。

オンラインストアなどのWebベースのアプリケーションを検討します。 オンライン買い物客が品目の購入を終了すると、購入したすべての品目が、フォームの事前入力に使用されるメモリ内XMLデータソースに配置されます。 次の図に、このプロセスを示します。このプロセスについて、図の後の表で説明します。

pf_pf_finsrv_webapp_v1

次の表に、この図の手順を示します。

ステップ

説明

1

ユーザは、ウェブベースのオンラインストアからアイテムを購入する。

2

ユーザーが品目の購入を完了し、「送信」ボタンをクリックすると、メモリ内XMLデータソースが作成されます。 購入した品目とユーザー情報は、メモリ内XMLデータソースに配置されます。

3

XMLデータソースは、発注書フォームの事前入力に使用されます(このフォームの例を次の表に示します)。

4

発注書フォームがクライアントのWebブラウザーにレンダリングされます。

次の図に、発注書フォームの例を示します。 テーブル内の情報は、XMLデータ内のレコード数に合わせて調整できます。

pf_pf_poform

メモ

フォームには、エンタープライズデータベースや外部アプリケーションなど、他のソースのデータを事前入力することができます。

フォームデザインに関する考慮事項

編集可能なレイアウトを含むFormsは、Designerで作成されたフォームデザインに基づいています。 フォームデザインでは、ユーザーの入力に基づく値の計算を含む、レイアウト、プレゼンテーション、データ取得ルールのセットを指定します。 ルールは、データがフォームに入力されると適用されます。 フォームに追加されるフィールドは、フォームデザイン内のサブフォームです。 例えば、前の図に示す発注書フォームでは、各行がサブフォームです。 サブフォームを含むフォームデザインの作成について詳しくは、編集可能なレイアウトの発注書フォームの作成を参照してください。

データのサブグループについて

固定レイアウトと編集可能なレイアウトを使用してフォームに事前入力するには、XMLデータソースを使用します。 ただし、フォームに編集可能なレイアウトを自動埋め込むXMLデータソースには、フォーム内で繰り返されるサブフォームの自動埋め込みに使用される繰り返しXML要素が含まれている点が異なります。 これらの繰り返しXML要素は、データサブグループと呼ばれます。

前の図に示す発注書フォームの事前入力に使用するXMLデータソースには、4つの繰り返しデータサブグループが含まれています。 各データサブグループは、購入した品目に対応します。 購入した商品は、モニター、卓上ランプ、電話、アドレス帳です。

次のXMLデータソースは、発注書フォームの事前入力に使用されます。

     <header>
         <!-- XML elements used to prepopulate non-repeating fields such as address
         <!and city
         <txtPONum>8745236985</txtPONum>
         <dtmDate>2004-02-08</dtmDate>
         <txtOrderedByCompanyName>Any Company Name</txtOrderedByCompanyName>
         <txtOrderedByAddress>555, Any Blvd.</txtOrderedByAddress>
         <txtOrderedByCity>Any City</txtOrderedByCity>
         <txtOrderedByStateProv>ST</txtOrderedByStateProv>
         <txtOrderedByZipCode>12345</txtOrderedByZipCode>
         <txtOrderedByCountry>Any Country</txtOrderedByCountry>
         <txtOrderedByPhone>(123) 456-7890</txtOrderedByPhone>
         <txtOrderedByFax>(123) 456-7899</txtOrderedByFax>
         <txtOrderedByContactName>Contact Name</txtOrderedByContactName>
         <txtDeliverToCompanyName>Any Company Name</txtDeliverToCompanyName>
         <txtDeliverToAddress>7895, Any Street</txtDeliverToAddress>
         <txtDeliverToCity>Any City</txtDeliverToCity>
         <txtDeliverToStateProv>ST</txtDeliverToStateProv>
         <txtDeliverToZipCode>12346</txtDeliverToZipCode>
         <txtDeliverToCountry>Any Country</txtDeliverToCountry>
         <txtDeliverToPhone>(123) 456-7891</txtDeliverToPhone>
         <txtDeliverToFax>(123) 456-7899</txtDeliverToFax>
         <txtDeliverToContactName>Contact Name</txtDeliverToContactName>
     </header>
     <detail>
         <!-- A data subgroup that contains information about the monitor>
         <txtPartNum>00010-100</txtPartNum>
         <txtDescription>Monitor</txtDescription>
         <numQty>1</numQty>
         <numUnitPrice>350.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the desk lamp>
         <txtPartNum>00010-200</txtPartNum>
         <txtDescription>Desk lamps</txtDescription>
         <numQty>3</numQty>
         <numUnitPrice>55.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the Phone>
             <txtPartNum>00025-275</txtPartNum>
             <txtDescription>Phone</txtDescription>
             <numQty>5</numQty>
             <numUnitPrice>85.00</numUnitPrice>
     </detail>
     <detail>
         <!-- A data subgroup that contains information about the address book>
         <txtPartNum>00300-896</txtPartNum>
         <txtDescription>Address book</txtDescription>
         <numQty>2</numQty>
         <numUnitPrice>15.00</numUnitPrice>
     </detail>

各データサブグループには、この情報に対応する4つのXML要素が含まれています。

  • 品目の部品番号
  • 項目の説明
  • 品目数
  • 単価

データサブグループの親XML要素の名前は、フォームデザイン内のサブフォームの名前と一致する必要があります。 例えば、前の図では、データサブグループの親XML要素の名前がdetailであることに注意してください。 これは、発注書フォームの基となるフォームデザインにあるサブフォームの名前に対応します。 データサブグループの親XML要素の名前とサブフォームの名前が一致しない場合、サーバー側のフォームは事前入力されません。

各データサブグループには、サブフォーム内のフィールド名に一致するXML要素が含まれている必要があります。 フォームデザイン内のdetailサブフォームには、次のフィールドが含まれます。

  • txtPartNum
  • txtDescription
  • numQty
  • numUnitPrice
メモ

繰り返しXML要素を含むデータソースを使用してフォームに事前入力しようとし、RenderAtClientオプションをNoに設定した場合、最初のデータレコードのみがフォームにマージされます。 すべてのデータレコードが確実にフォームにマージされるようにするには、RenderAtClientYesに設定します。 RenderAtClientオプションについて詳しくは、クライアントでのFormsのレンダリングを参照してください。

メモ

Formsサービスについて詳しくは、『 AEM Formsのサービスリファレンス 』を参照してください。

手順の概要

編集可能なレイアウトをフォームに事前入力するには、次のタスクを実行します。

  1. プロジェクトファイルを含めます。
  2. メモリ内XMLデータソースを作成します。
  3. XMLデータソースを変換します。
  4. 事前入力されたフォームをレンダリングする。

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

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

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

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

メモリ内XMLデータソースの作成

org.w3c.domクラスを使用して、メモリ内XMLデータソースを作成し、編集可能なレイアウトでフォームに事前入力することができます。 フォームに準拠するXMLデータソースにデータを配置する必要があります。 編集可能なレイアウトを含むフォームとXMLデータソースとの関係については、データのサブグループについてを参照してください。

XMLデータソースの変換

org.w3c.domクラスを使用して作成されたメモリ内XMLデータソースは、フォームの事前入力に使用する前に、 com.adobe.idp.Documentオブジェクトに変換できます。 Java XML変換クラスを使用して、メモリ内XMLデータソースを変換できます。

メモ

FormsサービスのWSDLを使用してフォームの事前入力を行う場合は、org.w3c.dom.DocumentオブジェクトをBLOBオブジェクトに変換する必要があります。

事前入力されたフォームのレンダリング

事前入力されたフォームは、他のフォームと同様にレンダリングします。 唯一の違いは、XMLデータソースを含むcom.adobe.idp.Documentオブジェクトを使用してフォームに事前入力する点です。

関連トピック

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

接続プロパティの設定

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

インタラクティブPDF formsのレンダリング

Forms

Java APIを使用したフォームの事前入力

Forms API(Java)を使用してフォームに編集可能なレイアウトを事前入力するには、次の手順を実行します。

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

    Javaプロジェクトのクラスパスに、adobe-forms-client.jarなどのクライアントJARファイルを含めます。 これらのファイルの場所については、AEM Forms Java ライブラリファイルを含めるを参照してください。

  2. メモリ内XMLデータソースの作成

    • DocumentBuilderFactoryクラス` newInstanceメソッドを呼び出して、Java DocumentBuilderFactoryオブジェクトを作成します。

    • DocumentBuilderFactoryオブジェクトのnewDocumentBuilderメソッドを呼び出して、Java DocumentBuilderオブジェクトを作成します。

    • DocumentBuilderオブジェクトのnewDocumentメソッドを呼び出して、org.w3c.dom.Documentオブジェクトをインスタンス化します。

    • org.w3c.dom.DocumentオブジェクトのcreateElementメソッドを呼び出して、XMLデータソースのルート要素を作成します。 これにより、ルート要素を表すElementオブジェクトが作成されます。 要素の名前を表す文字列値をcreateElementメソッドに渡します。 戻り値を Element にキャストします。次に、DocumentオブジェクトのappendChildメソッドを呼び出してルート要素をドキュメントに追加し、ルート要素オブジェクトを引数として渡します。 次のコード行に、このアプリケーションロジックを示します。

       Element root = (Element)document.createElement("transaction");  document.appendChild(root);

    • DocumentオブジェクトのcreateElementメソッドを呼び出して、XMLデータソースのヘッダー要素を作成します。 要素の名前を表す文字列値をcreateElementメソッドに渡します。 戻り値を Element にキャストします。次に、rootオブジェクトのappendChildメソッドを呼び出してヘッダー要素をルート要素に追加し、ヘッダー要素オブジェクトを引数として渡します。 ヘッダー要素に追加されるXML要素は、フォームの静的な部分に対応します。 次のコード行に、このアプリケーションロジックを示します。

       Element header = (Element)document.createElement("header");  root.appendChild(header);

    • DocumentオブジェクトのcreateElementメソッドを呼び出してヘッダー要素に属する子要素を作成し、要素の名前を表す文字列値を渡します。 戻り値を Element にキャストします。次に、 appendChildメソッドを呼び出して子要素の値を設定し、 DocumentオブジェクトのcreateTextNodeメソッドを引数として渡します。 子要素の値として表示される文字列値を指定します。 最後に、ヘッダー要素のappendChildメソッドを呼び出して子要素をヘッダー要素に追加し、子要素オブジェクトを引数として渡します。 次のコード行に、このアプリケーションロジックを示します。

       Element poNum= (Element)document.createElement("txtPONum");  poNum.appendChild(document.createTextNode("8745236985"));  header.appendChild(LastName);

    • フォームの静的部分に表示される各フィールドの最後のサブステップを繰り返して、残りの要素をヘッダー要素に追加します(XMLデータソース図では、これらのフィールドがAの節に表示されます(データのサブグループの理解を参照)。

    • DocumentオブジェクトのcreateElementメソッドを呼び出して、XMLデータソースの詳細要素を作成します。 要素の名前を表す文字列値をcreateElementメソッドに渡します。 戻り値を Element にキャストします。次に、rootオブジェクトのappendChildメソッドを呼び出してルート要素にdetail要素を追加し、引数としてdetail要素オブジェクトを渡します。 詳細要素に追加されるXML要素は、フォームの動的な部分に対応します。 次のコード行に、このアプリケーションロジックを示します。

       Element detail = (Element)document.createElement("detail");  root.appendChild(detail);

    • DocumentオブジェクトのcreateElementメソッドを呼び出して詳細要素に属する子要素を作成し、要素の名前を表す文字列値を渡します。 戻り値を Element にキャストします。次に、 appendChildメソッドを呼び出して子要素の値を設定し、 DocumentオブジェクトのcreateTextNodeメソッドを引数として渡します。 子要素の値として表示される文字列値を指定します。 最後に、detail要素のappendChildメソッドを呼び出して子要素をdetail要素に追加し、子要素オブジェクトを引数として渡します。 次のコード行に、このアプリケーションロジックを示します。

       Element txtPartNum = (Element)document.createElement("txtPartNum");  txtPartNum.appendChild(document.createTextNode("00010-100"));  detail.appendChild(txtPartNum);

    • 詳細要素に追加するすべてのXML要素に対して、最後のサブ手順を繰り返します。 発注書フォームへの入力に使用するXMLデータソースを適切に作成するには、次のXML要素を詳細要素に追加する必要があります。txtDescriptionnumQty、およびnumUnitPrice

    • フォームの事前入力に使用されるすべてのデータ項目に対して、最後の2つのサブ手順を繰り返します。

  3. XMLデータソースの変換

    • javax.xml.transform.Transformerオブジェクトの静的なnewInstanceメソッドを呼び出して、javax.xml.transform.Transformerオブジェクトを作成します。
    • TransformerFactoryオブジェクトのnewTransformerメソッドを呼び出して、Transformerオブジェクトを作成します。
    • コンストラクタを使用して ByteArrayOutputStream オブジェクトを作成します。
    • コンストラクターを使用し、手順1で作成したorg.w3c.dom.Documentオブジェクトを渡して、javax.xml.transform.dom.DOMSourceオブジェクトを作成します。
    • コンストラクタを使用して javax.xml.transform.dom.DOMSource オブジェクトを渡すことによって、ByteArrayOutputStream オブジェクトを作成します。
    • javax.xml.transform.Transformerオブジェクトのtransformメソッドを呼び出し、javax.xml.transform.dom.DOMSourceおよびjavax.xml.transform.stream.StreamResultオブジェクトを渡すことで、Java ByteArrayOutputStreamオブジェクトを設定します。
    • バイト配列を作成し、ByteArrayOutputStreamオブジェクトのサイズをバイト配列に割り当てます。
    • ByteArrayOutputStreamオブジェクトのtoByteArrayメソッドを呼び出して、バイト配列を設定します。
    • コンストラクターを使用してバイト配列を渡し、com.adobe.idp.Documentオブジェクトを作成します。
  4. 事前入力されたフォームのレンダリング

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

    • ファイル名拡張子を含むフォームデザイン名を指定するstring値。
    • フォームとマージするデータを含むcom.adobe.idp.Documentオブジェクト。 必ず、手順1と2で作成したcom.adobe.idp.Documentオブジェクトを使用します。
    • 実行時オプションを格納するPDFFormRenderSpecオブジェクト。
    • Formsサービスに必要なURI値を含むURLSpecオブジェクト。
    • 添付ファイルを格納するjava.util.HashMapオブジェクト。 これはオプションのパラメーターで、フォームにファイルを添付しない場合はnullを指定できます。

    renderPDFFormメソッドは、クライアントのWebブラウザーに書き込む必要があるフォームデータストリームを含むFormsResultオブジェクトを返します。

    • フォームデータストリームをクライアントのWebブラウザーに送信するために使用するjavax.servlet.ServletOutputStreamオブジェクトを作成します。
    • FormsResultオブジェクトのgetOutputContentメソッドを呼び出して、com.adobe.idp.Documentオブジェクトを作成します。
    • com.adobe.idp.DocumentオブジェクトのgetInputStreamメソッドを呼び出して、java.io.InputStreamオブジェクトを作成します。
    • InputStreamオブジェクトのreadメソッドを呼び出し、バイト配列を引数として渡すことで、バイト配列にフォームデータストリームを入力します。
    • javax.servlet.ServletOutputStreamオブジェクトのwriteメソッドを呼び出して、フォームデータストリームをクライアントWebブラウザーに送信します。 writeメソッドにバイト配列を渡します。

関連トピック

クイックスタート(SOAPモード):Java APIを使用した、Formsへの編集可能なレイアウトの事前入力

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

接続プロパティの設定

WebサービスAPIを使用したフォームの事前入力

Forms API(Webサービス)を使用してフォームに編集可能なレイアウトを事前入力するには、次の手順を実行します。

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

    • FormsサービスのWSDLを使用するJavaプロキシクラスを作成します。 (Apache Axisを使用したJavaプロキシクラスの作成を参照)。
    • Javaプロキシクラスをクラスパスに含めます。
  2. メモリ内XMLデータソースの作成

    • DocumentBuilderFactoryクラス` newInstanceメソッドを呼び出して、Java DocumentBuilderFactoryオブジェクトを作成します。

    • DocumentBuilderFactoryオブジェクトのnewDocumentBuilderメソッドを呼び出して、Java DocumentBuilderオブジェクトを作成します。

    • DocumentBuilderオブジェクトのnewDocumentメソッドを呼び出して、org.w3c.dom.Documentオブジェクトをインスタンス化します。

    • org.w3c.dom.DocumentオブジェクトのcreateElementメソッドを呼び出して、XMLデータソースのルート要素を作成します。 これにより、ルート要素を表すElementオブジェクトが作成されます。 要素の名前を表す文字列値をcreateElementメソッドに渡します。 戻り値を Element にキャストします。次に、DocumentオブジェクトのappendChildメソッドを呼び出してルート要素をドキュメントに追加し、ルート要素オブジェクトを引数として渡します。 次のコード行に、このアプリケーションロジックを示します。

       Element root = (Element)document.createElement("transaction");  document.appendChild(root);

    • DocumentオブジェクトのcreateElementメソッドを呼び出して、XMLデータソースのヘッダー要素を作成します。 要素の名前を表す文字列値をcreateElementメソッドに渡します。 戻り値を Element にキャストします。次に、rootオブジェクトのappendChildメソッドを呼び出してヘッダー要素をルート要素に追加し、ヘッダー要素オブジェクトを引数として渡します。 ヘッダー要素に追加されるXML要素は、フォームの静的な部分に対応します。 次のコード行に、このアプリケーションロジックを示します。

       Element header = (Element)document.createElement("header");  root.appendChild(header);

    • DocumentオブジェクトのcreateElementメソッドを呼び出してヘッダー要素に属する子要素を作成し、要素の名前を表す文字列値を渡します。 戻り値を Element にキャストします。次に、 appendChildメソッドを呼び出して子要素の値を設定し、 DocumentオブジェクトのcreateTextNodeメソッドを引数として渡します。 子要素の値として表示される文字列値を指定します。 最後に、ヘッダー要素のappendChildメソッドを呼び出して子要素をヘッダー要素に追加し、子要素オブジェクトを引数として渡します。 次のコード行に、このアプリケーションロジックを示します。

       Element poNum= (Element)document.createElement("txtPONum");  poNum.appendChild(document.createTextNode("8745236985"));  header.appendChild(LastName);

    • フォームの静的部分に表示される各フィールドの最後のサブステップを繰り返して、残りの要素をヘッダー要素に追加します(XMLデータソース図では、これらのフィールドがAの節に表示されます(データのサブグループの理解を参照)。

    • DocumentオブジェクトのcreateElementメソッドを呼び出して、XMLデータソースの詳細要素を作成します。 要素の名前を表す文字列値をcreateElementメソッドに渡します。 戻り値を Element にキャストします。次に、rootオブジェクトのappendChildメソッドを呼び出してルート要素にdetail要素を追加し、引数としてdetail要素オブジェクトを渡します。 詳細要素に追加されるXML要素は、フォームの動的な部分に対応します。 次のコード行に、このアプリケーションロジックを示します。

       Element detail = (Element)document.createElement("detail");  root.appendChild(detail);

    • DocumentオブジェクトのcreateElementメソッドを呼び出して詳細要素に属する子要素を作成し、要素の名前を表す文字列値を渡します。 戻り値を Element にキャストします。次に、 appendChildメソッドを呼び出して子要素の値を設定し、 DocumentオブジェクトのcreateTextNodeメソッドを引数として渡します。 子要素の値として表示される文字列値を指定します。 最後に、detail要素のappendChildメソッドを呼び出して子要素をdetail要素に追加し、子要素オブジェクトを引数として渡します。 次のコード行に、このアプリケーションロジックを示します。

       Element txtPartNum = (Element)document.createElement("txtPartNum");  txtPartNum.appendChild(document.createTextNode("00010-100"));  detail.appendChild(txtPartNum);

    • 詳細要素に追加するすべてのXML要素に対して、最後のサブ手順を繰り返します。 発注書フォームへの入力に使用するXMLデータソースを適切に作成するには、次のXML要素を詳細要素に追加する必要があります。txtDescriptionnumQty、およびnumUnitPrice

    • フォームの事前入力に使用されるすべてのデータ項目に対して、最後の2つのサブ手順を繰り返します。

  3. XMLデータソースの変換

    • javax.xml.transform.Transformerオブジェクトの静的なnewInstanceメソッドを呼び出して、javax.xml.transform.Transformerオブジェクトを作成します。
    • TransformerFactoryオブジェクトのnewTransformerメソッドを呼び出して、Transformerオブジェクトを作成します。
    • コンストラクタを使用して ByteArrayOutputStream オブジェクトを作成します。
    • コンストラクターを使用し、手順1で作成したorg.w3c.dom.Documentオブジェクトを渡して、javax.xml.transform.dom.DOMSourceオブジェクトを作成します。
    • コンストラクタを使用して javax.xml.transform.dom.DOMSource オブジェクトを渡すことによって、ByteArrayOutputStream オブジェクトを作成します。
    • javax.xml.transform.Transformerオブジェクトのtransformメソッドを呼び出し、javax.xml.transform.dom.DOMSourceおよびjavax.xml.transform.stream.StreamResultオブジェクトを渡すことで、Java ByteArrayOutputStreamオブジェクトを設定します。
    • バイト配列を作成し、ByteArrayOutputStreamオブジェクトのサイズをバイト配列に割り当てます。
    • ByteArrayOutputStreamオブジェクトのtoByteArrayメソッドを呼び出して、バイト配列を設定します。
    • コンストラクターを使用してBLOBオブジェクトを作成し、setBinaryDataメソッドを呼び出してバイト配列を渡します。
  4. 事前入力されたフォームのレンダリング

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

    • ファイル名拡張子を含むフォームデザイン名を指定するstring値。
    • フォームとマージするデータを含むBLOBオブジェクト。 必ず、手順1と2で作成したBLOBオブジェクトを使用します。
    • 実行時オプションを格納するPDFFormRenderSpeccオブジェクト。 詳しくは、「AEM Forms APIリファレンス」を参照してください。
    • Formsサービスに必要なURI値を含むURLSpecオブジェクト。
    • 添付ファイルを格納するjava.util.HashMapオブジェクト。 これはオプションのパラメーターで、フォームにファイルを添付しない場合はnullを指定できます。
    • メソッドで設定される空のcom.adobe.idp.services.holders.BLOBHolderオブジェクト。 これは、レンダリングされたPDFフォームを保存するために使用されます。
    • メソッドで設定される空のjavax.xml.rpc.holders.LongHolderオブジェクト。 (この引数は、フォームのページ数を保存します)。
    • メソッドで設定される空のjavax.xml.rpc.holders.StringHolderオブジェクト。 (この引数はロケール値を格納します)。
    • この操作の結果を格納する空のcom.adobe.idp.services.holders.FormsResultHolderオブジェクト。

    renderPDFFormメソッドは、最後の引数値として渡されるcom.adobe.idp.services.holders.FormsResultHolderオブジェクトに、クライアントWebブラウザーに書き込む必要のあるフォームデータストリームを設定します。

    • com.adobe.idp.services.holders.FormsResultHolderオブジェクトのvalueデータメンバーの値を取得して、FormResultオブジェクトを作成します。
    • FormsResultオブジェクトのgetOutputContentメソッドを呼び出して、フォームデータを含むBLOBオブジェクトを作成します。
    • getContentTypeメソッドを呼び出して、BLOBオブジェクトのコンテンツタイプを取得します。
    • setContentTypeメソッドを呼び出し、BLOBオブジェクトのコンテンツタイプを渡すことで、javax.servlet.http.HttpServletResponseオブジェクトのコンテンツタイプを設定します。
    • javax.servlet.http.HttpServletResponseオブジェクトのgetOutputStreamメソッドを呼び出して、フォームデータストリームをクライアントWebブラウザーに書き込むためのjavax.servlet.ServletOutputStreamオブジェクトを作成します。
    • バイト配列を作成し、BLOBオブジェクトのgetBinaryDataメソッドを呼び出してそれを設定します。 このタスクは、FormsResultオブジェクトの内容をバイト配列に割り当てます。
    • javax.servlet.http.HttpServletResponseオブジェクトのwriteメソッドを呼び出して、フォームデータストリームをクライアントWebブラウザーに送信します。 writeメソッドにバイト配列を渡します。
    メモ

    renderPDFFormメソッドは、最後の引数値として渡されるcom.adobe.idp.services.holders.FormsResultHolderオブジェクトに、クライアントWebブラウザーに書き込む必要のあるフォームデータストリームを設定します。

関連トピック

Base64エンコーディングを使用したAEM Formsの呼び出し

このページ