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デザイナ」を参照してください。

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

xfa.host.pageUpメソッドとxfa.host.pageDownメソッドを呼び出すと、ページ(パネル)間を移動するフォームをデザインできます。 このスクリプトはボタンのClickイベントに配置され、runAt属性はBothに設定されます。 Bothを選択した理由は、(PDFとしてレンダリングされるフォームの)Adobe ReaderやAcrobatがサーバーに行かなくてもページを変更でき、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デザイナを参照してください。

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

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

イベントのタイミング

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

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

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

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

nullテストについて詳しくは、Formsデザイナーを参照してください。

フォームボタン

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

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

HTML 4.0 Webブラウザー

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

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

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

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

ドキュメントのデジタル署名について詳しくは、デジタル署名と認証ドキュメントを参照してください

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

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

フォームデータを検証中

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

メモ

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

手順の概要

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

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

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

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

FormsクライアントAPIオブジェクトの作成

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

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

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

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

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

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

フォームデータが投稿されるHTTP URLは、FormsサービスクライアントAPIを使用してターゲットURLを設定することで指定できます。また、XDPフォームデザインに含まれる「送信」ボタンで指定することもできます。 フォームデザインでターゲット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のレンダリング

カスタムツールバーでのHTMLFormsのレンダリング

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

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

FormsAPI(Java)を使用してHTMLフォームをレンダリングする:

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

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

  2. Formsクライアント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アプリケーションサーバー以外のサーバーを参照している場合、FormsはHTMLで正常にレンダリングされません(ApplicationWebRoot値は、FormsServiceClientオブジェクトの(Deprecated) renderHTMLFormメソッドに渡されるURLSpecオブジェクトを使用して指定されます)。 ApplicationWebRootがホストサーバーの別のサーバーである場合は、管理コンソールの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オブジェクト's getOutputContentメソッドを呼び出して、com.adobe.idp.Documentオブジェクトを作成します。
    • getContentTypeメソッドを呼び出して、com.adobe.idp.Documentオブジェクトのコンテンツタイプを取得します。
    • javax.servlet.http.HttpServletResponseオブジェクトのコンテンツタイプを設定するには、setContentTypeメソッドを呼び出し、com.adobe.idp.Documentオブジェクトのコンテンツタイプを渡します。
    • 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としてレンダリングする

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

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

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

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

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

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

    StandAloneオプションがtrueで、ApplicationWebRootがAEM FormsをホストするJ2EEアプリケーションサーバー以外のサーバーを参照している場合、FormsはHTMLで正常にレンダリングされません(ApplicationWebRoot値は、FormsServiceClientオブジェクトの(Deprecated) renderHTMLFormメソッドに渡されるURLSpecオブジェクトを使用して指定されます)。 ApplicationWebRootがホストサーバーの別のサーバーである場合は、管理コンソールの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オブジェクトのコンテンツタイプを取得します。
    • 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メソッドに渡します。

関連トピック

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

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

このページ

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