編集可能なレイアウトをFormsに自動埋め込み

編集可能なレイアウトをFormsに自動埋め込み

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

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

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

次の2つのXMLデータソースで、フォームの自動埋め込みを行うことができます。

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

自動埋め込みを行うすべてのフォームフィールドに、XML要素が存在する必要があります。 XML要素名は、フィールド名と一致する必要があります。 XML要素がフォームフィールドに対応していない場合、またはXML要素名がフィールド名と一致しない場合、XML要素は無視されます。 すべてのXML要素が指定されている限り、XML要素が表示される順序と一致させる必要はありません。

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

例えば、サンプルの確認フォームなどのフォームを自動埋め込むことができます。 (インタラクティブPDF formsのレンダリングの「確認フォーム」を参照)。

サンプルの確認フォームを自動埋め込むには、フォーム内の3つのフィールドに一致する3つのXML要素を含むXMLデータソースを作成する必要があります。 このフォームには次の3つのフィールドが含まれています。FirstNameLastNameAmount。 最初の手順は、フォームデザイン内のフィールドと一致する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

ユーザーが購入アイテムの購入を完了し、「Submit」ボタンをクリックすると、メモリ内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オブジェクトに変換できます。 メモリ内XMLデータソースは、Java XML変換クラスを使用して変換できます。

メモ

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

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

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

関連トピック

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

接続プロパティの設定

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

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

FormsをレンダリングするWeb アプリケーションの作成

Java APIを使用したフォームの自動埋め込み

FormsAPI(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の節に示します(「データサブグループ](#understanding-data-subgroups)について」を参照)。[

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

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

    • DocumentオブジェクトのcreateElementメソッドを呼び出して、detail要素に属する子要素を作成し、要素名を表す文字列値を渡します。 戻り値を 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要素を詳細要素に追加する必要があります。txtDescriptionnumQtynumUnitPrice

    • フォームの自動埋め込みに使用されるすべてのデータ項目に対して、最後の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オブジェクト's 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を使用したフォームの自動埋め込み

FormsAPI(Webサービス)を使用して編集可能なレイアウトをフォームに自動埋め込むには、次の手順を実行します。

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

  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の節に示します(「データサブグループ](#understanding-data-subgroups)について」を参照)。[

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

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

    • DocumentオブジェクトのcreateElementメソッドを呼び出して、detail要素に属する子要素を作成し、要素名を表す文字列値を渡します。 戻り値を 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要素を詳細要素に追加する必要があります。txtDescriptionnumQtynumUnitPrice

    • フォームの自動埋め込みに使用されるすべてのデータ項目に対して、最後の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 FormsAPIリファレンスを参照してください。
    • 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オブジェクトのコンテンツタイプを取得します。
    • javax.servlet.http.HttpServletResponseオブジェクトのコンテンツタイプを設定するには、setContentTypeメソッドを呼び出し、BLOBオブジェクトのコンテンツタイプを渡します。
    • 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の呼び出し

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
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