インタラクティブ PDF Forms のレンダリング rendering-interactive-pdf-forms
このドキュメントのサンプルと例は、JEE 環境の AEM Forms のみを対象としています。
Forms サービスは、ユーザーから情報を収集するために、インタラクティブ PDF forms をクライアントデバイス(通常は web ブラウザー)にレンダリングします。インタラクティブフォームがレンダリングされると、ユーザーはフォームフィールドにデータを入力し、フォーム上の送信ボタンをクリックして、情報を Forms サービスに送り返すことができます。インタラクティブな PDF フォームを表示するには、クライアント Web ブラウザーをホストするコンピューターに Adobe Reader または Acrobat をインストールする必要があります。
ローン申し込みのサンプル
Forms サービスが、どのようにしてインタラクティブフォームを使用してユーザーから情報を収集するかを示すために、サンプルのローン申し込みフォームが紹介されています。このアプリケーションを使用すると、ユーザーはローンのセキュリティ保護に必須のデータをフォームに入力し、データを Forms サービスに送信できます。次の図に、ローン申し込みのロジックフローを示します。
次の表に、この図の手順を示します。
GetLoanForm Java サーブレットは、「HTML」ページから呼び出されます。GetLoanForm Java サーブレットは、Forms Service Client API を使用して、ローン申し込みフォームをクライアント web ブラウザーにレンダリングします。( Java API を使用したインタラクティブ PDF フォームのレンダリングを参照してください。)HandleData Java サーブレットに送信されます。(「ローン申し込みフォーム」 を参照してください。)HandleData Java サーブレットは、Forms Service Client API を使用してフォーム送信を処理し、フォームデータを取得します。次に、データはエンタープライズデータベースに保存されます。(送信済みフォームの処理を参照してください。)ローン申し込みフォーム
このインタラクティブなローン申し込みフォームは、サンプルのローン申請の GetLoanForm Java サーブレットによってレンダリングされます。
確認フォーム
このフォームは、サンプルのローン申請の HandleData Java サーブレットにレンダリングされます。
この HandleData Java サーブレットは、このフォームにユーザーの姓と名および金額を事前入力します。フォームが事前入力された後、クライアントの web ブラウザーに送信されます。(編集可能なレイアウトを使用した Forms の事前入力)
Java サーブレット
サンプルのローン申し込みフォームは、Java サーブレットとして存在する Forms サービスアプリケーションの一例です。Java サーブレットは、WebSphere などの J2EE アプリケーションサーバー上で実行される Java プログラムで、Forms Service Client API コードを含みます。
次のコードは、GetLoanForm という名前の Java サーブレットの構文を示します。
public class GetLoanForm extends HttpServlet implements Servlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
public void doPost(HttpServletRequest req, HttpServletResponse resp
throws ServletException, IOException {
}
通常、Java サーブレットの doGet または doPost メソッドには Forms Service Client API コードを配置しません。より優れたプログラミング方法としては、このコードを別のクラスに配置し、そのクラスを、doPost メソッド(または doGet メソッド)でインスタンス化し、適切なメソッドを呼び出します。ただし、コードを簡潔にするため、このセクションでのコードの例は最小限に抑えられ、コード例は doPost メソッドで配置されています。
手順の概要
インタラクティブ PDF フォームをレンダリングするには、次のタスクを実行します。
- プロジェクトファイルを含めます。
- Forms Client API オブジェクトを作成します。
- URI 値を指定します。
- フォームにファイルを添付します(オプション)。
- インタラクティブ PDF フォームをレンダリングします。
- フォームデータストリームをクライアントの Web ブラウザーに書き込みます。
プロジェクトファイルの組み込み
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
Forms Client API オブジェクトの作成
Forms Service Client API 操作をプログラムで実行する前に、Forms Client API オブジェクトを作成する必要があります。Java API を使用している場合は、FormsServiceClient オブジェクトを作成します。Forms web サービス API を使用している場合は、FormsService オブジェクトを作成します。
URI 値の指定
Forms サービスでフォームをレンダリングするために必要な URI 値を指定できます。Forms アプリケーションの一部として保存されたフォームデザインは、コンテンツルート URI 値 repository:/// を使用して参照できます。例えば、FormsApplication という Forms アプリケーション内にある Loan.xdp という次のフォームデザインを考えます。
このフォームデザインにアクセスするには、フォーム名(renderPDFForm メソッドに渡される最初のパラメーター)として Applications/FormsApplication/1.0/FormsFolder/Loan.xdp を指定し、コンテンツルート URI 値として repository:/// を指定します。
Forms アプリケーション内のリソースへのパスは次のとおりです。
Applications/Application-name/Application-version/Folder.../Filename
URI 値の一例を以下に示します。
- Applications/AppraisalReport/1.0/Forms/FullForm.xdp
- Applications/AnotherApp/1.1/Assets/picture.jpg
- Applications/SomeApp/2.0/Resources/Data/XSDs/MyData.xsd
インタラクティブフォームをレンダリングする際に、フォームデータの送信先となるターゲット URL などの URI 値を定義できます。ターゲット URL は、次のいずれかの方法で定義できます。
- Designer でフォームデザインを設計する際の「送信」ボタン
- Forms サービス Client API を使用
ターゲット URL がフォームデザイン内で定義されている場合は、Forms サービス Client API を使用して上書きしないでください。Forms API を使用してターゲット URL を設定すると、フォームデザインで指定された URL が、API を使用して指定された URL にリセットされます。フォームデザインで指定されたターゲット URL に PDF フォームを送信する場合は、プログラムによってターゲット URL を空の文字列に設定します。
「送信」ボタンと「計算」ボタン(サーバーで実行される対応するスクリプト)を含むフォームがある場合、フォームが送信されるスクリプトの URL をプログラムで定義してスクリプトを実行できます。フォームデザインの送信ボタンを使用して、フォームデータが投稿される URL を指定します(フォームデータの計算を参照)。
com.adobe.idp.Document インスタンスを渡すこともできます。com.adobe.idp.Document インスタンスにはフォームデザインが含まれています(Forms サービスにドキュメントを渡すを参照)。フォームにファイルを添付する
フォームにファイルを添付できます。添付ファイルを含む PDF フォームをレンダリングすると、ユーザーは添付ファイルペインを使用して Acrobat で添付ファイルを取得できます。フォームには、テキストファイルなどの様々なファイルタイプを添付したり、バイナリファイル(JPG ファイルなど )に添付したりできます。
インタラクティブ PDF フォームのレンダリング
フォームをレンダリングするには、Designer で作成され、XDP ファイルまたは PDF ファイルとして保存されたフォームデザインを使用します。また、Acrobat を使用して作成され、PDF ファイルとして保存されたフォームをレンダリングすることもできます。インタラクティブな PDF フォームをレンダリングするには、FormsServiceClient オブジェクトの renderPDFForm メソッドまたは renderPDFForm2 メソッドを呼び出します。
renderPDFForm は URLSpec オブジェクトを使用します。XDP ファイルへのコンテンツルートは、URLSpec オブジェクトの setContentRootURI メソッドを使用して Forms サービスに渡されます。フォームデザイン名(formQuery)は別のパラメーター値として渡されます。2 つの値が連結され、フォームデザインへの絶対参照が取得されます。
renderPDFForm2 メソッドはレンダリングする XDP ドキュメントまたは PDF ドキュメントを含む com.adobe.idp.Document インスタンスを受け取ります。
Java API を使用したインタラクティブ PDF フォームのレンダリング render-an-interactive-pdf-form-using-the-java-api
Forms API(Java)を使用してインタラクティブ PDF フォームをレンダリングします。
-
プロジェクトファイルを含める
クライアント JAR ファイル(adobe-forms-client.jar など)を Java プロジェクトのクラスパスに含めます。
-
Forms Client API オブジェクトの作成
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactoryオブジェクトを渡すことによって、FormsServiceClientオブジェクトを作成します。
- 接続プロパティを含む
-
URI 値を指定
- コンストラクターを使用して、URI 値を格納する
URLSpecオブジェクトを作成します。 URLSpecオブジェクトのsetApplicationWebRootメソッドを呼び出して、アプリケーションの web ルートを表す文字列値を渡します。URLSpecオブジェクトのsetContentRootURIメソッドを呼び出して、コンテンツルート URI 値を指定する文字列値を渡します。フォームデザインがコンテンツルート URI に配置されていることを確認します。そうでない場合、Forms サービスは例外をスローします。リポジトリを参照するには、repository:///を指定します。URLSpecオブジェクトのsetTargetURLメソッドを呼び出し、フォームデータの投稿先にターゲット URL 値を指定する文字列値を渡します。フォームデザインでターゲット URL を定義する場合、空の文字列を渡すことができます。また、計算を実行するためのフォームの送信先の URL を指定することもできます。
- コンストラクターを使用して、URI 値を格納する
-
フォームにファイルを添付する
-
コンストラクターを使用して、添付ファイルを格納する
java.util.HashMapオブジェクトを作成します。 -
レンダリングされたフォームに添付するファイルごとに
java.util.HashMapオブジェクトのputメソッドを呼び出します。このメソッドに次の値を渡します。- ファイル名の拡張子を含む、添付ファイルの名前を指定する文字列値
-
添付ファイルを含む
com.adobe.idp.Documentオブジェクト
note note NOTE フォームに添付するファイルごとに、この手順を繰り返します。この手順はオプションです。添付ファイルを送信しない場合は、 nullを渡すことができます。 -
-
インタラクティブ PDF フォームのレンダリング
FormsServiceClientオブジェクトのrenderPDFFormメソッドを呼び出して、以下の値を渡します。- フォームデザイン名を指定する文字列値で、ファイル名の拡張子も含まれます。Forms アプリケーションの一部であるフォームデザインを参照する場合は、必ず次のような完全なパスを指定してください。
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp - フォームに結合するデータを含む
com.adobe.idp.Documentオブジェクト。データを結合しない場合は、空のcom.adobe.idp.Documentオブジェクトを渡します。 - 実行時オプションを格納する
PDFFormRenderSpecオブジェクト。これはオプションのパラメーターで、実行時オプションを指定しない場合は、nullを指定できます。 - Forms サービスで必要となる URI 値が含まれる
URLSpecオブジェクト。 - 添付ファイルを保存する
java.util.HashMapオブジェクト。オプションのパラメーターです。フォームにファイルを添付しない場合はnullを指定できます。
renderPDFFormメソッドは、クライアントの Web ブラウザーに書き込む必要のあるフォームデータストリームを含むFormsResultオブジェクトを返します。 - フォームデザイン名を指定する文字列値で、ファイル名の拡張子も含まれます。Forms アプリケーションの一部であるフォームデザインを参照する場合は、必ず次のような完全なパスを指定してください。
-
フォームデータストリームをクライアント web ブラウザーに書き込む
FormsResultオブジェクトのgetOutputContentメソッドを呼び出して、com.adobe.idp.Documentオブジェクトを作成します。getContentTypeメソッドを呼び出して、com.adobe.idp.Documentオブジェクトのコンテンツタイプを取得します。javax.servlet.http.HttpServletResponseオブジェクトのsetContentTypeメソッドを呼び出してコンテンツタイプを設定し、com.adobe.idp.Documentオブジェクトのコンテンツタイプを渡します。javax.servlet.http.HttpServletResponseオブジェクトのgetOutputStreamメソッドを呼び出して、javax.servlet.ServletOutputStreamオブジェクトを作成します。このオブジェクトは、フォームデータストリームをクライアント web ブラウザーに書き込むために使用されます。com.adobe.idp.DocumentオブジェクトのgetInputStreamメソッドを呼び出して、java.io.InputStreamオブジェクトを作成します。InputStreamオブジェクトのreadメソッドを呼び出してバイト配列を引数として渡すことによって、バイト配列を作成してフォームデータストリームを入力します。javax.servlet.ServletOutputStreamオブジェクトのwriteメソッドを呼び出して、フォームデータストリームをクライアント web ブラウザーに送信します。writeメソッドにバイト配列を渡します。
Web サービス API を使用したインタラクティブ PDF フォームのレンダリング render-an-interactive-pdf-form-using-the-web-service-api
Forms API(web サービス)を使用してインタラクティブ PDF フォームをレンダリングします。
-
プロジェクトファイルを含める
- Forms Service WSDL を使用する Java プロキシクラスを作成します。
- Java プロキシクラスをクラスパスに含めます。
-
Forms Client API オブジェクトの作成
FormsServiceオブジェクトを作成し、認証値を設定します。 -
URI 値を指定
- コンストラクターを使用して、URI 値を格納する
URLSpecオブジェクトを作成します。 URLSpecオブジェクトのsetApplicationWebRootメソッドを呼び出して、アプリケーションの web ルートを表す文字列値を渡します。URLSpecオブジェクトのsetContentRootURIメソッドを呼び出して、コンテンツルート URI 値を指定する文字列値を渡します。フォームデザインがコンテンツルート URI に配置されていることを確認します。そうでない場合、Forms サービスは例外をスローします。リポジトリを参照するには、repository:///を指定します。URLSpecオブジェクトのsetTargetURLメソッドを呼び出し、フォームデータの投稿先にターゲット URL 値を指定する文字列値を渡します。フォームデザインでターゲット URL を定義する場合、空の文字列を渡すことができます。また、計算を実行するためのフォームの送信先の URL を指定することもできます。
- コンストラクターを使用して、URI 値を格納する
-
フォームにファイルを添付する
-
コンストラクターを使用して、添付ファイルを格納する
java.util.HashMapオブジェクトを作成します。 -
レンダリングされたフォームに添付するファイルごとに
java.util.HashMapオブジェクトのputメソッドを呼び出します。このメソッドに次の値を渡します。- ファイル名の拡張子を含む添付ファイルの名前を指定する文字列値
-
添付ファイルを含む
BLOBオブジェクト
note note NOTE フォームに添付するファイルごとに、この手順を繰り返します。 -
-
インタラクティブ PDF フォームのレンダリング
FormsServiceオブジェクトのrenderPDFFormメソッドを呼び出して、以下の値を渡します。- フォームデザイン名を指定する文字列値で、ファイル名の拡張子も含まれます。Forms アプリケーションの一部であるフォームデザインを参照する場合は、必ず次のような完全なパスを指定してください。
Applications/FormsApplication/1.0/FormsFolder/Loan.xdp - フォームに結合するデータを含む
BLOBオブジェクト。データを結合しない場合は、空のnullオブジェクトを渡します。 - 実行時オプションを格納する
PDFFormRenderSpecオブジェクト。これはオプションのパラメーターで、実行時オプションを指定しない場合は、nullを指定できます。 - 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 ブラウザーに書き込む必要のあるフォームデータストリームを入力します。 - フォームデザイン名を指定する文字列値で、ファイル名の拡張子も含まれます。Forms アプリケーションの一部であるフォームデザインを参照する場合は、必ず次のような完全なパスを指定してください。
-
フォームデータストリームをクライアント 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メソッドに渡します。
フォームデータストリームをクライアント web ブラウザーに書き込む
Forms サービスがフォームをレンダリングすると、クライアントの web ブラウザーに書き込む必要があるフォームデータストリームが返されます。クライアント Web ブラウザーに書き込まれると、フォームはユーザーに対して表示されます。