FormsをHTMLとしてレンダリング

Formsサービスは、WebブラウザーからのHTTP要求に応じて、フォームをHTMLとしてレンダリングします。 フォームをHTMLとしてレンダリングする利点は、クライアントWebブラウザーが配置されているコンピューターにAdobe Reader、Acrobat、またはFlash Player(フォームガイド(非推奨)用)が不要であることです。

フォームをHTMLとしてレンダリングするには、フォームデザインをXDPファイルとして保存する必要があります。 PDFファイルとして保存されたフォームデザインは、HTMLとしてレンダリングできません。 HTMLとしてレンダリングされるDesignerのフォームデザインを開発する際には、次の条件を考慮してください。

  • フォームに線、ボックス、グリッドを描画するときに、オブジェクトの境界線プロパティを使用しないでください。ブラウザーによっては、 のプレビューで表示されるとおりに境界線が表示されないことがあります。また、オブジェクトが重なって表示されたり、他のオブジェクトを本来の位置から押しのけたりする場合があります。
  • 線、長方形および円を使用して、背景を定義できます。
  • テキストを収容するために必要と思われるサイズよりも少し大きく描画します。 一部のWebブラウザーでは、読みやすくテキストが表示されません。
メモ

FormServiceClientオブジェクトの(Deprecated) renderHTMLFormおよびrenderHTMLForm2メソッドを使用してTIFF画像を含むフォームをレンダリングすると、Internet ExplorerまたはMozilla Firefoxブラウザーに表示されるレンダリングされたHTMLフォームにTIFF画像が表示されません。 これらのブラウザーは、TIFF画像をネイティブでサポートしません。

HTMLページ

フォームデザインがHTMLフォームとしてレンダリングされる場合、各第2レベルサブフォームはHTMLページ(パネル)としてレンダリングされます。 Designerでサブフォームの階層を表示できます。 ルートサブフォームに属する子サブフォーム(ルートサブフォームのデフォルト名はform1)はパネルのサブフォームです。 次に、フォームデザインのサブフォームの例を示します。

     form1 
         Master Pages 
         PanelSubform1 
             NestedDynamicSubform 
                 TextEdit1 
         PanelSubform2 
             TextEdit1 
         PanelSubform3 
             TextEdit1 
         PanelSubform4 
             TextEdit1

フォームデザインをHTMLフォームとしてレンダリングする場合、パネルは特定のページサイズに制限されません。 ダイナミックサブフォームがある場合は、パネルサブフォーム内に階層化する必要があります。 動的サブフォームは、無限数のHTMLページまで拡張できます。

フォームをHTMLフォームとしてレンダリングする場合、ページサイズ(PDFとしてレンダリングされるフォームのページ番号付けに必要)は意味を持ちません。 編集可能なレイアウトを含むフォームは、無限数のHTMLページまで拡大できるので、マスターページのフッターを避けることが重要です。 マスターページのコンテンツ領域の下にあるフッターでは、フローがページ境界を超えるHTMLコンテンツを上書きする場合があります。

xfa.host.pageUpメソッドとxfa.host.pageDownメソッドを使用して、パネル間を明示的に移動する必要があります。 ページを変更するには、フォームをFormsサービスに送信し、Formsサービスでフォームをレンダリングしてクライアントデバイス(通常はWebブラウザー)に戻します。

メモ

Formsサービスにフォームを送信し、Formsサービスでフォームをレンダリングしてクライアントデバイスに戻すプロセスは、「ラウンドトリッピングデータ」と呼ばれます。

メモ

HTMLフォーム上のHTML電子署名ボタンの外観をカスタマイズする場合は、 fscdigsig.cssファイル( adobe-forms-ds.ear / adobe-forms-ds.warファイル内)で次のプロパティを変更する必要があります。

.fsc-ds-ssb:このスタイルシートは、空白の記号フィールドの場合に適用されます。

.fsc-ds-ssv:このスタイルシートは、有効な記号フィールドの場合に適用されます。

.fsc-ds-ssc:このスタイルシートは、有効な記号フィールドが適用されるが、データが変更された場合に適用されます。

.fsc-ds-ssi:このスタイルシートは、無効な記号フィールドの場合に適用されます。

.fsc-ds-popup-bg:このスタイルシートのプロパティは使用されていません。

.fsc-ds-popup-btn:このスタイルシートのプロパティは使用されていません。

スクリプトの実行

フォーム作成者は、スクリプトをサーバー上で実行するかクライアント上で実行するかを指定します。 Formsサービスは、runAt属性を使用してクライアントとサーバーの間で配布できる、フォームインテリジェンスを実行するための分散型イベント処理環境を作成します。 この属性やフォームデザイン内でのスクリプトの作成について詳しくは、Forms Designerを参照してください。

Formsサービスは、フォームのレンダリング中にスクリプトを実行できます。 その結果、クライアント上で使用できないデータベースやWebサービスに接続することで、フォームにデータを事前入力できます。 また、サーバー上で実行するボタンのClickイベントを設定し、クライアントがサーバーにトリップデータをラウンドトリップするようにすることもできます。 これにより、ユーザーがフォームを操作している間に、エンタープライズデータベースなどのサーバーリソースを必要とする可能性のあるスクリプトをクライアントが実行できます。 HTMLフォームの場合、formcalcスクリプトはサーバー上でのみ実行できます。 その結果、serverまたはbothで実行するように、これらのスクリプトにマークを付ける必要があります。

xfa.host.pageUpメソッドとxfa.host.pageDownメソッドを呼び出すことで、ページ(パネル)間を移動するフォームをデザインできます。 このスクリプトは、ボタンのClickイベントに配置され、runAt属性はBothに設定されます。 Bothを選択する理由は、Adobe ReaderまたはAcrobat(PDFとしてレンダリングされるフォームの場合)がサーバーに移動せずにページを変更でき、HTMLフォームがサーバーにデータを丸めてページを変更できるようにするためです。 つまり、フォームがFormsサービスに送信され、フォームがHTMLとしてレンダリングされ、新しいページが表示されます。

スクリプト変数とフォームフィールドには、itemなどの同じ名前を付けないことをお勧めします。 Internet Explorerなどの一部のWebブラウザーでは、フォームフィールドと同じ名前の変数が初期化されず、スクリプトエラーが発生する場合があります。 フォームフィールドとスクリプト変数には、それぞれ異なる名前を付けることをお勧めします。

ページナビゲーション機能とフォームスクリプトの両方を含むHTMLフォームをレンダリングする場合(例えば、フォームがレンダリングされるたびにスクリプトがデータベースからフィールドデータを取得するとします)、フォームスクリプトがform:readyeventの代わりにform:calculateイベントに配置されます。

form:readyイベントにあるフォームスクリプトは、フォームの最初のレンダリング時に1回だけ実行され、以降のページ取得では実行されません。 これに対し、 form:calculateイベントは、フォームがレンダリングされるページナビゲーションごとに実行されます。

メモ

複数ページフォームでは、JavaScriptによってページに加えられた変更は、別のページに移動しても保持されません。

フォームを送信する前に、カスタムスクリプトを呼び出すことができます。 この機能は、利用可能なすべてのブラウザーで動作します。 ただし、Output TypeプロパティがForm Bodyに設定されたHTMLフォームをレンダリングする場合にのみ使用できます。 Output TypeFull HTMLの場合は機能しません。 この機能を設定する手順については、管理ヘルプの「フォームの設定」を参照してください。

フォームを送信する前に呼び出すコールバック関数を定義する必要があります。関数の名前は_user_onsubmitです。 この関数は例外をスローしないと想定され、例外がスローされる場合は無視されます。 JavaScript関数は、htmlのheadセクションに配置することをお勧めします。ただし、xfasubset.jsを含むスクリプトタグの終わりより前の任意の場所で宣言できます。

formserverがコンボボックスを含むXDPをレンダリングすると、コンボボックスの作成に加えて、2つの非表示テキストフィールドも作成されます。 これらのテキストフィールドには、ドロップダウンリストのデータが格納されます(一方にはオプションの表示名が格納され、もう一方にはオプションの値が格納されます)。 したがって、ユーザーがフォームを送信するたびに、ドロップダウンリストのデータ全体が送信されます。 毎回それほど多くのデータを送信したくない場合は、カスタムスクリプトを記述してそれを無効にできます。 例:ドロップダウンリストの名前はdrpOrderedByStateProvで、サブフォームヘッダーに含まれます。 HTML入力要素の名前はheader[0].drpOrderedByStateProv[0]になります。 ドロップダウンのデータを保存して送信する非表示フィールドの名前は、次の名前になります。header[0].drpOrderedByStateProv_DISPLAYITEMS_[0] header[0].drpOrderedByStateProv_VALUEITEMS_[0]

データを投稿しない場合は、次の方法でこれらの入力要素を無効にできます。var __CUSTOM_SCRIPTS_VERSION = 1; //enabling the feature function _user_onsubmit() { var elems = document.getElementsByName("header[0].drpOrderedByStateProv_DISPLAYITEMS_[0]"); elems[0].disabled = true; elems = document.getElementsByName("header[0].drpOrderedByStateProv_VALUEITEMS_[0]"); elems[0].disabled = true; }

header[0].drpOrderedByStateProv_DISPLAYITEMS_[0] header[0].drpOrderedByStateProv_VALUEITEMS_[0]
var __CUSTOM_SCRIPTS_VERSION = 1; //enabling the feature 
    function _user_onsubmit() { 
    var elems = document.getElementsByName("header[0].drpOrderedByStateProv_DISPLAYITEMS_[0]"); 
    elems[0].disabled = true; 
    elems = document.getElementsByName("header[0].drpOrderedByStateProv_VALUEITEMS_[0]"); 
    elems[0].disabled = true; 
    }

XFAサブセット

HTMLとしてレンダリングするフォームデザインを作成する場合は、スクリプトをJavaScript言語のスクリプト用のXFAサブセットに制限する必要があります。

クライアント上で実行されるスクリプト、またはクライアントとサーバーの両方で実行されるスクリプトは、XFAサブセット内で記述する必要があります。 サーバー上で実行されるスクリプトは、完全なXFAスクリプティングモデルを使用し、FormCalcも使用できます。 JavaScriptの使用について詳しくは、Forms Designerを参照してください。

クライアントでスクリプトを実行する場合、表示中の現在のパネルのみスクリプトを使用できます。例えば、パネルBが表示されている場合に、パネルAにあるフィールドに対してスクリプトを作成することはできません。 サーバーでスクリプトを実行する場合、すべてのパネルにアクセスできます。

また、クライアントで実行するスクリプト内でスクリプティングオブジェクトモデル(SOM)式を使用する場合は、注意が必要です。 クライアント上で実行されるスクリプトでは、SOM式の簡略化されたサブセットのみがサポートされます。

イベントのタイミング

XFAサブセットは、HTMLイベントにマッピングされるXFAイベントを定義します。 イベントの計算と検証のタイミングでの動作には、若干の違いがあります。 Webブラウザーでは、フィールドを終了すると、完全なcalculateイベントが実行されます。 「計算」イベントは、フィールド値を変更した場合には自動的には実行されません。 xfa.form.execCalculateメソッドを呼び出すことで、強制的にcalculateイベントを呼び出すことができます。

Webブラウザーでは、検証イベントは、フィールドを終了するかフォームを送信する場合にのみ実行されます。 xfa.form.execValidateメソッドを使用して、validateイベントを強制できます。

(Adobe ReaderやAcrobatとは対照的に)Webブラウザーに表示されるFormsは、必須フィールドのXFA nullテスト(エラーまたは警告)に準拠しています。

  • nullテストでエラーが発生し、値を指定せずにフィールドを終了すると、メッセージボックスが表示され、「OK」をクリックした後にそのフィールドに再配置されます。
  • nullテストで警告が生成され、値を指定せずにフィールドを終了した場合は、「 OK 」または「キャンセル」をクリックするよう求められ、値を指定せずに続行するか、値を入力するフィールドに戻るかを選択できます。

nullテストについて詳しくは、Forms Designerを参照してください。

フォームボタン

送信ボタンをクリックすると、フォームデータがFormsサービスに送信され、フォーム処理の終了を表します。 preSubmitイベントは、クライアントまたはサーバー上で実行するように設定できます。 preSubmitイベントは、フォームがクライアント上で実行するように設定されている場合、フォーム送信の前に実行されます。 それ以外の場合は、フォームの送信中にpreSubmitイベントがサーバーで実行されます。 preSubmitイベントについて詳しくは、Forms Designerを参照してください。

ボタンにクライアント側スクリプトが関連付けられていない場合、データがサーバーに送信され、サーバーで計算が実行され、HTMLフォームが再生成されます。 ボタンにクライアント側スクリプトが含まれている場合、データはサーバーに送信されず、クライアント側スクリプトがWebブラウザーで実行されます。

HTML 4.0 Webブラウザー

HTML 4.0のみをサポートするWebブラウザーは、XFAサブセットのクライアント側スクリプティングモデルをサポートできません。 HTML 4.0とMSDHTMLまたはCSS2HTMLの両方で動作するフォームデザインを作成する場合、クライアントで実行するようにマークされたスクリプトは、実際にサーバー上で実行されます。 例えば、HTML 4.0 Webブラウザーに表示されているフォーム上のボタンをユーザーがクリックするとします。 この場合、クライアント側スクリプトが実行されるサーバーにフォームデータが送信されます。

フォームロジックは、HTML 4.0のサーバーと、MSDHTMLまたはCSS2HTMLのクライアントで実行されるcalculateイベントに配置することをお勧めします。

プレゼンテーションの変更の管理

HTMLページ(パネル)間を移動すると、データの状態のみが維持されます。 背景色や必須フィールド設定などの設定は維持されません(初期設定と異なる場合)。 プレゼンテーションの状態を維持するには、フィールドのプレゼンテーション状態を表すフィールド(通常は非表示)を作成する必要があります。 非表示のフィールドの値に基づいてプレゼンテーションを変更するスクリプトをフィールドのCalculateイベントに追加すると、HTMLページ(パネル)間を行ったり来たりする際に、プレゼンテーションの状態を保持できます。

次のスクリプトは、hiddenFieldの値に基づいてフィールドのfillColorを維持します。 このスクリプトがフィールドのCalculateイベント内にあるとします。

     If (hiddenField.rawValue == 1) 
         this.fillColor = "255,0,0" 
     else 
         this.fillColor = "0,255,0"
メモ

テーブルのセル内にネストされている場合、スタティックオブジェクトはレンダリングされたHTMLフォームに表示されません。 例えば、テーブルのセル内にネストされた円や長方形は、レンダリングHTMLフォーム内に表示されません。 ただし、テーブルの外側に配置されている場合は、同じスタティックオブジェクトが正しく表示されます。

HTMLフォームのデジタル署名

フォームが以下のHTML変換のいずれかとしてレンダリングされる場合、電子署名フィールドを含むHTMLフォームに署名することはできません。

  • AHTML
  • HTML4
  • StaticHTML
  • NoScriptXHTML

ドキュメントのデジタル署名については、Digital Signing and Certifying Documentsを参照してください。

アクセシビリティガイドラインに準拠したXHTMLフォームのレンダリング

アクセシビリティガイドラインに準拠した完全なHTMLフォームをレンダリングできます。 つまり、フォームは完全なHTMLページではなくbodyタグ内でレンダリングされるのに対して、完全なHTMLタグ内でレンダリングされます。

フォームデータの検証

フォームをHTMLフォームとしてレンダリングする場合、フォームフィールドに対する検証ルールの使用を制限することをお勧めします。 一部の検証ルールは、HTMLフォームでサポートされない場合があります。 例えば、HTMLフォームとしてレンダリングされるフォームデザインのDate/TimeフィールドにMM-DD-YYYYの検証パターンを適用すると、日付が正しく入力されていても、正しく機能しません。 ただし、この検証パターンは、PDFとしてレンダリングされるフォームに対して適切に機能します。

メモ

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

手順の概要

HTMLフォームをレンダリングするには、次の手順を実行します。

  1. プロジェクトファイルを含めます。
  2. Forms Client APIオブジェクトを作成します。
  3. HTML実行時オプションを設定します。
  4. HTMLフォームをレンダリングします。
  5. フォームデータストリームをクライアントWebブラウザーに書き込みます。

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

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

Forms Client APIオブジェクトの作成

プログラムによってデータをPDF formClient APIに読み込む前に、Form Data Integrationサービスクライアントを作成する必要があります。 サービスクライアントを作成する場合、サービスを呼び出すために必要な接続設定を定義します。

HTML実行時オプションの設定

HTMLフォームのレンダリング時にHTML実行時オプションを設定します。 例えば、HTMLフォームにツールバーを追加して、クライアントコンピューター上の添付ファイルをユーザーが選択したり、HTMLフォームと共にレンダリングされる添付ファイルを取得したりできます。 デフォルトでは、HTMLツールバーは無効になっています。 HTMLフォームにツールバーを追加するには、実行時オプションをプログラムで設定する必要があります。 デフォルトでは、HTMLツールバーは次のボタンで構成されます。

  • Home:アプリケーションのWebルートへのリンクを提供します。
  • Upload:現在のフォームに添付するファイルを選択するためのユーザーインターフェイスを提供します。
  • Download:添付ファイルを表示するユーザインタフェースを提供します。

HTMLフォームにHTMLツールバーが表示される場合、ユーザーは最大10個のファイルを選択して、フォームデータと共に送信できます。 ファイルが送信されると、Formsサービスはファイルを取得できます。

フォームをHTMLとしてレンダリングする場合、ユーザーエージェント値を指定できます。 ユーザーエージェント値は、ブラウザーとシステムの情報を提供します。 これはオプションの値で、空の文字列値を渡すことができます。 Java APIを使用したHTMLフォームのレンダリングクイックスタートでは、ユーザーエージェントの値を取得し、それを使用してフォームをHTMLとしてレンダリングする方法を示します。

FormsサービスクライアントAPIを使用してターゲットURLを設定することで、またはXDPフォームデザインに含まれる「送信」ボタンで、フォームデータが投稿されるHTTP URLを指定できます。 ターゲットURLがフォームデザインで指定されている場合は、FormsサービスクライアントAPIを使用して値を設定しないでください。

メモ

ツールバーを使用したHTMLフォームのレンダリングはオプションです。

メモ

AHTMLフォームをレンダリングする場合は、ツールバーをフォームに追加しないことをお勧めします。

HTMLフォームのレンダリング

HTMLフォームをレンダリングするには、Designerで作成し、XDPファイルとして保存するフォームデザインを指定する必要があります。 また、HTML変換タイプを選択する必要があります。 例えば、Internet Explorer 5.0以降用の動的HTMLをレンダリングするHTML変換タイプを指定できます。

HTMLフォームのレンダリングには、他のフォームタイプのレンダリングに必要なURI値などの値も必要です。

フォームデータストリームをクライアントWebブラウザーに書き込む

Formsサービスは、HTMLフォームをレンダリングする際に、クライアントのWebブラウザーに書き込む必要があるフォームデータストリームを返します。 クライアントのWebブラウザーに書き込まれると、HTMLフォームがユーザーに表示されます。

関連トピック

Java APIを使用してフォームをHTMLとしてレンダリングする

WebサービスAPIを使用してフォームをHTMLとしてレンダリングする

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

接続プロパティの設定

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

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

カスタムツールバーを使用したHTML Formsのレンダリング

Forms

Java APIを使用してフォームをHTMLとしてレンダリングする

Forms API(Java)を使用してHTMLフォームをレンダリングします。

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

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

  2. Forms Client APIオブジェクトの作成

    • 接続プロパティを含む ServiceClientFactory オブジェクトを作成します。
    • コンストラクターを使用してFormsServiceClientオブジェクトを渡し、ServiceClientFactoryオブジェクトを作成します。
  3. HTML実行時オプションの設定

    • HTMLRenderSpecオブジェクトを作成するには、コンストラクタを使用します。
    • ツールバーでHTMLフォームをレンダリングするには、HTMLRenderSpecオブジェクトのsetHTMLToolbarメソッドを呼び出して、HTMLToolbar列挙値を渡します。 例えば、垂直方向のHTMLツールバーを表示するには、HTMLToolbar.Verticalを渡します。
    • HTMLフォームのロケール値を設定するには、HTMLRenderSpecオブジェクトのsetLocaleメソッドを呼び出し、ロケール値を指定する文字列値を渡します。 (これはオプションの設定です)。
    • 完全なHTMLタグ内でHTMLフォームをレンダリングするには、HTMLRenderSpecオブジェクトのsetOutputTypeメソッドを呼び出してOutputType.FullHTMLTagsを渡します。 (これはオプションの設定です)。
    メモ

    StandAloneオプションがtrueで、ApplicationWebRootがAEM FormsをホストするJ2EEアプリケーションサーバー以外のサーバーを参照する場合(ApplicationWebRoot値はFormsServiceClientオブジェクトの(Deprecated) renderHTMLFormメソッドに渡されるURLSpecオブジェクトを使用して指定)、FormsはHTMLで正常にレンダリングされません。 ApplicationWebRootが、AEM Formsをホストするサーバーの別のサーバーである場合、管理コンソールのWebルートURIの値をフォームのWebアプリケーションURI値として設定する必要があります。 これは、管理コンソールにログインして、サービス/Formsをクリックし、「 WebルートURI 」をhttps://server-name:port/FormServerに設定することで実行できます。 次に、設定を保存します。

  4. HTMLフォームのレンダリング

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

    • ファイル名拡張子を含むフォームデザイン名を指定するstring値。 Formsアプリケーションの一部であるフォームデザインを参照する場合は、必ずApplications/FormsApplication/1.0/FormsFolder/Loan.xdpのように完全なパスを指定してください。
    • HTML環境設定タイプを指定するTransformTo列挙値。 例えば、Internet Explorer 5.0以降の動的HTMLと互換性のあるHTMLフォームをレンダリングするには、TransformTo.MSDHTMLと指定します。
    • フォームとマージするデータを含むcom.adobe.idp.Documentオブジェクト。 データを結合しない場合は、空のcom.adobe.idp.Documentオブジェクトを渡します。
    • HTML実行時オプションを格納するHTMLRenderSpecオブジェクト。
    • HTTP_USER_AGENTヘッダー値を指定するstring値。例: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
    • HTMLフォームをレンダリングするために必要なURI値を格納するURLSpecオブジェクト。
    • 添付ファイルを格納するjava.util.HashMapオブジェクト。 これはオプションのパラメーターで、フォームにファイルを添付しない場合はnullを指定できます。

    (Deprecated) renderHTMLFormメソッドは、クライアントのWebブラウザーに書き込み可能なフォームデータストリームを含むFormsResultオブジェクトを返します。

  5. フォームデータストリームをクライアントWebブラウザーに書き込む

    • FormsResultオブジェクトのgetOutputContentメソッドを呼び出して、com.adobe.idp.Documentオブジェクトを作成します。
    • getContentTypeメソッドを呼び出して、com.adobe.idp.Documentオブジェクトのコンテンツタイプを取得します。
    • setContentTypeメソッドを呼び出し、com.adobe.idp.Documentオブジェクトのコンテンツタイプを渡すことで、javax.servlet.http.HttpServletResponseオブジェクトのコンテンツタイプを設定します。
    • javax.servlet.http.HttpServletResponseオブジェクトのgetOutputStreamメソッドを呼び出して、フォームデータストリームをクライアントWebブラウザーに書き込むためのjavax.servlet.ServletOutputStreamオブジェクトを作成します。
    • com.adobe.idp.DocumentオブジェクトのgetInputStreamメソッドを呼び出して、java.io.InputStreamオブジェクトを作成します。
    • InputStreamオブジェクトのreadメソッドを呼び出し、バイト配列を引数として渡すことで、バイト配列を作成し、フォームデータストリームに入力します。
    • javax.servlet.ServletOutputStreamオブジェクトのwriteメソッドを呼び出して、フォームデータストリームをクライアントWebブラウザーに送信します。 writeメソッドにバイト配列を渡します。

関連トピック

FormsをHTMLとしてレンダリング

クイックスタート(SOAPモード):Java APIを使用したHTMLフォームのレンダリング

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

接続プロパティの設定

WebサービスAPIを使用してフォームをHTMLとしてレンダリングする

Forms API(Webサービス)を使用してHTMLフォームをレンダリングします。

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

    • FormsサービスのWSDLを使用するJavaプロキシクラスを作成します。
    • Javaプロキシクラスをクラスパスに含めます。
  2. Forms Client APIオブジェクトの作成

    FormsServiceオブジェクトを作成し、認証値を設定します。

  3. HTML実行時オプションの設定

    • HTMLRenderSpecオブジェクトを作成するには、コンストラクタを使用します。
    • ツールバーでHTMLフォームをレンダリングするには、HTMLRenderSpecオブジェクトのsetHTMLToolbarメソッドを呼び出して、HTMLToolbar列挙値を渡します。 例えば、垂直方向のHTMLツールバーを表示するには、HTMLToolbar.Verticalを渡します。
    • HTMLフォームのロケール値を設定するには、HTMLRenderSpecオブジェクトのsetLocaleメソッドを呼び出し、ロケール値を指定する文字列値を渡します。 詳しくは、「AEM Forms APIリファレンス」を参照してください。
    • 完全なHTMLタグ内でHTMLフォームをレンダリングするには、HTMLRenderSpecオブジェクトのsetOutputTypeメソッドを呼び出してOutputType.FullHTMLTagsを渡します。
    メモ

    StandAloneオプションがtrueで、ApplicationWebRootがAEM FormsをホストするJ2EEアプリケーションサーバー以外のサーバーを参照する場合(ApplicationWebRoot値はFormsServiceClientオブジェクトの(Deprecated) renderHTMLFormメソッドに渡されるURLSpecオブジェクトを使用して指定)、FormsはHTMLで正常にレンダリングされません。 ApplicationWebRootが、AEM Formsをホストするサーバーの別のサーバーである場合、管理コンソールのWebルートURIの値をフォームのWebアプリケーションURI値として設定する必要があります。 これは、管理コンソールにログインして、サービス/Formsをクリックし、「 WebルートURI 」をhttps://server-name:port/FormServerに設定することで実行できます。 次に、設定を保存します。

  4. HTMLフォームのレンダリング

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

    • ファイル名拡張子を含むフォームデザイン名を指定するstring値。 Formsアプリケーションの一部であるフォームデザインを参照する場合は、必ずApplications/FormsApplication/1.0/FormsFolder/Loan.xdpのように完全なパスを指定してください。
    • HTML環境設定タイプを指定するTransformTo列挙値。 例えば、Internet Explorer 5.0以降の動的HTMLと互換性のあるHTMLフォームをレンダリングするには、TransformTo.MSDHTMLと指定します。
    • フォームとマージするデータを含むBLOBオブジェクト。 データを結合しない場合は、nullを渡します。 (編集可能なレイアウトを使用したFormsの事前入力を参照)。
    • HTML実行時オプションを格納するHTMLRenderSpecオブジェクト。
    • HTTP_USER_AGENTヘッダー値を指定するstring値。例: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322) この値を設定しない場合は、空の文字列を渡すことができます。
    • HTMLフォームをレンダリングするために必要なURI値を格納するURLSpecオブジェクト。 (URI値の指定を参照)。
    • 添付ファイルを格納するjava.util.HashMapオブジェクト。 これはオプションのパラメーターで、フォームにファイルを添付しない場合はnullを指定できます。 (フォームへのファイルの添付を参照)。
    • メソッドで設定される空のcom.adobe.idp.services.holders.BLOBHolderオブジェクト。 このパラメーター値は、レンダリングされたフォームを保存します。
    • メソッドで設定される空のcom.adobe.idp.services.holders.BLOBHolderオブジェクト。 このパラメーターは、出力XMLデータを格納します。
    • メソッドで設定される空のjavax.xml.rpc.holders.LongHolderオブジェクト。 この引数は、フォームのページ数を保存します。
    • メソッドで設定される空のjavax.xml.rpc.holders.StringHolderオブジェクト。 この引数はロケール値を格納します。
    • メソッドで設定される空のjavax.xml.rpc.holders.StringHolderオブジェクト。 この引数は、使用されるHTMLレンダリング値を格納します。
    • この操作の結果を格納する空のcom.adobe.idp.services.holders.FormsResultHolderオブジェクト。

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

  5. フォームデータストリームをクライアント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メソッドにバイト配列を渡します。

関連トピック

FormsをHTMLとしてレンダリング

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

このページ