データの読み込みと書き出し importing-and-exporting-data
このドキュメントのサンプルと例は、JEE 環境の AEM Forms のみを対象としています。
Form Data Integration サービスについて about-the-form-data-integration-service
Form Data Integration サービスを使用すると、データを PDF フォームに読み込んだり、PDF フォームからデータを書き出したりできます。読み込みおよび書き出し操作では、次の 2 種類の PDF forms がサポートされます。
- Acrobat フォーム(Acrobat で作成)は、フォームフィールドを含む PDF ドキュメントです。
- Adobe XML フォーム(Designer で作成)は、XML Adobe XML フォームアーキテクチャ(XFA)に準拠する PDF ドキュメントです。
フォームデータは、PDF フォームのタイプに応じて、次のいずれかの形式で存在します。
- XFDF ファイル。Acrobat フォームデータ形式の XML バージョンです。
- XDP ファイル。フォームフィールド定義を含む XML ファイルです。フォームフィールドデータと埋め込まれた PDF ファイルが含まれる場合もあります。Designer で生成された XDP ファイルは、埋め込み base-64 エンコード PDF ドキュメントを使用する場合にのみ利用できます。
次のタスクは、Form Data Integration サービスを使用して実行できます。
- PDF forms にデータを読み込みます。詳しくは、フォームデータの読み込みを参照してください。
- PDF forms からデータを書き出します。詳しくは、フォームデータの書き出しを参照してください。
フォームデータの読み込み importing-form-data
Form Data Integration サービスを使用して、フォームデータをインタラクティブ PDF forms に読み込むことができます。インタラクティブ PDF フォームは、ユーザーから情報を収集したり、カスタム情報を表示したりするための 1 つ以上のフィールドを含む PDF ドキュメントです。Form Data Integration サービスは、フォームの演算、検証、スクリプティングをサポートしていません。
Designer で作成したフォームにデータを読み込むには、有効な XDP XML データソースを参照する必要があります。次の住宅ローン申し込みフォームサンプルについて見てみましょう。
データ値をこのフォームに読み込むには、フォームに対応する有効な XDP XML データソースが必要です。任意の XML データソースを使用して、Form Data Integration サービスを使用してデータをフォームに読み込むことはできません。任意の XML データソースと XDP XML データソースの違いは、XDP データソースが XML フォームアーキテクチャ(XFA)に準拠している点です。次の XML は、住宅ローン申し込みフォームのサンプルに対応する XML データソースを表しています。
<?xml version="1.0" encoding="UTF-8" ?>
- <xfa:datasets xmlns:xfa="https://www.xfa.org/schema/xfa-data/1.0/">
- <xfa:data>
- <data>
- <Layer>
<closeDate>1/26/2007</closeDate>
<lastName>Johnson</lastName>
<firstName>Jerry</firstName>
<mailingAddress>JJohnson@NoMailServer.com</mailingAddress>
<city>New York</city>
<zipCode>00501</zipCode>
<state>NY</state>
<dateBirth>26/08/1973</dateBirth>
<middleInitials>D</middleInitials>
<socialSecurityNumber>(555) 555-5555</socialSecurityNumber>
<phoneNumber>5555550000</phoneNumber>
</Layer>
- <Mortgage>
<mortgageAmount>295000.00</mortgageAmount>
<monthlyMortgagePayment>1724.54</monthlyMortgagePayment>
<purchasePrice>300000</purchasePrice>
<downPayment>5000</downPayment>
<term>25</term>
<interestRate>5.00</interestRate>
</Mortgage>
</data>
</xfa:data>
</xfa:datasets>
手順の概要 summary-of-steps
フォームデータを PDF フォームに読み込むには、次の手順を実行します。
- プロジェクトファイルを含めます。
- フォームデータ統合サービスクライアントを作成します。
- PDF フォームを参照します。
- XML データソースを参照します。
- データを PDF フォームにインポートします。
- PDF フォームを PDF ファイルとして保存します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めるようにします。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-formdataintegration-client.jar
- adobe-utilities.jar(AEM Forms を JBoss にデプロイする場合に必要)
- jbossall-client.jar(AEM Forms が JBoss にデプロイされている場合に必要)
これらの JAR ファイルの場所について詳しくは、AEM Forms Java ライブラリファイルを含める を参照してください。
Form Data Integration サービスクライアントの作成
プログラムによってデータを PDF form クライアント API に読み込む前に、Data Integration Service クライアントを作成する必要があります。サービスクライアントを作成する際は、サービスを呼び出すために必要な接続設定を定義します。詳しくは、接続プロパティの設定を参照してください。
PDF フォームの参照
データを PDF フォームに読み込むには、Designer で作成した XML フォームまたは Acrobat で作成した Acrobat フォームを参照する必要があります。
XML データソースの参照
フォームデータを読み込むには、有効なデータソースを参照する必要があります。Designer で作成した XFA XML フォームにデータを読み込むには、XDP XML データソースを使用する必要があります。Acrobat フォームを参照する場合は、XFDF データソースを使用する必要があります。データのインポート先のフィールドごとに、値を指定する必要があります。XML データソース内の要素がフォーム内のフィールドに対応していない場合、その要素は無視されます。
データを PDF フォームに読み込み
PDF フォームと有効な XML データソースを参照した後、データを PDF フォームに読み込むことができます。
PDF フォームを PDF ファイルとして保存
データをフォームに読み込んだ後、フォームを PDF ファイルとして保存できます。PDF ファイルとして保存したフォームを Adobe Reader または Acrobat で開くと、読み込まれたデータがフォームに表示されます。
関連トピック
Java API を使用したフォームデータの読み込み import-form-data-using-the-java-api
フォームデータ統合 API(Java)を使用してフォームデータをインポートします。
-
プロジェクトファイルを含めます。
adobe-formdataintegration-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
フォームデータ統合サービスクライアントを作成します。
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクタを使用して
FormDataIntegrationClientオブジェクトを渡すことによって、ServiceClientFactoryオブジェクトを作成します。
- 接続プロパティを含む
-
PDF フォームを参照します。
- コンストラクタを使用して
java.io.FileInputStreamオブジェクトを作成します。PDF フォームの場所を指定する文字列の値を渡します。 com.adobe.idp.Documentコンストラクタを使用して、PDF フォームを格納するcom.adobe.idp.Documentオブジェクトを作成します。PDF フォームが格納されたjava.io.FileInputStreamオブジェクトをコンストラクタに渡します。
- コンストラクタを使用して
-
XML データソースを参照します。
- コンストラクタを使用して
java.io.FileInputStreamオブジェクトを作成し、フォームにインポートするデータが格納されている XML ファイルの場所を示す文字列値を渡します。 com.adobe.idp.Documentコンストラクタを使用して、フォームデータが格納されるcom.adobe.idp.Documentオブジェクトを作成します。フォームデータを含むjava.io.FileInputStreamオブジェクトをコンストラクターに渡します。
- コンストラクタを使用して
-
データを PDF フォームにインポートします。
FormDataIntegrationClientオブジェクトのimportDataメソッドを呼び出して次の値を渡すことにより、データを PDF フォームにインポートします。- PDF フォームが格納された
com.adobe.idp.Documentオブジェクト。 - フォームデータが格納された
com.adobe.idp.Documentオブジェクト。
importDataメソッドは、XML データソースにあるデータを含む PDF フォームを格納するcom.adobe.idp.Documentオブジェクトを返します。 - PDF フォームが格納された
-
PDF フォームを PDF ファイルとして保存します。
java.io.Fileオブジェクトを作成し、ファイル拡張子が「 .pdf」であることを確認します。DocumentオブジェクトのcopyToFileメソッドを呼び出して、Documentオブジェクトのコンテンツをファイルにコピーします(importDataメソッドが返したDocumentオブジェクトを使用してください)。
関連情報
Web サービス API を使用したフォームデータの読み込み import-form-data-using-the-web-service-api
フォームデータ統合 API(web サービス)を使用してフォームデータをインポートします。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/FormDataIntegration?WSDL&lc_version=9.0.1を使用するようにします。note note NOTE localhostを、AEM Forms をホストするサーバーの IP アドレスに置き換えます。 -
フォームデータ統合サービスクライアントを作成します。
-
デフォルトのコンストラクターを使用して
FormDataIntegrationClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクターを使用してFormDataIntegrationClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例えば、http://localhost:8080/soap/services/FormDataIntegration?blob=mtom) 。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。ただし、?blob=mtomを指定して MTOM を使用します。 -
FormDataIntegrationClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
FormDataIntegrationClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
FormDataIntegrationClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
-
-
PDF フォームを参照します。
- コンストラクタを使用して
BLOBオブジェクトを作成します。このBLOBオブジェクトは、PDF フォームを格納するために使用します。 - コンストラクターを呼び出して
System.IO.FileStreamオブジェクトを作成します。PDF フォームの場所とファイルを開くモードを指定する文字列値を渡します。 System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することでバイト配列のサイズを決定することができます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出して、バイト配列にストリームデータを入力します。読み取り対象のバイト配列、開始位置、ストリーム長を渡します。MTOMフィールドにバイト配列の内容を割り当てて、BLOBオブジェクトに入力します。
- コンストラクタを使用して
-
XML データソースを参照します。
- コンストラクタを使用して
BLOBオブジェクトを作成します。このBLOBオブジェクトは、フォームにインポートされたデータを格納するために使用されます。 - コンストラクターを呼び出して
System.IO.FileStreamオブジェクトを作成します。インポートするデータを含む XML ファイルの場所と、ファイルを開くモードを指定する文字列値を渡します。 System.IO.FileStreamオブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することでバイト配列のサイズを決定することができます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出して、バイト配列にストリームデータを入力します。読み取り対象のバイト配列、開始位置、ストリーム長を渡します。MTOMフィールドにバイト配列の内容を割り当てて、BLOBオブジェクトにデータを入力します。
- コンストラクタを使用して
-
データを PDF フォームにインポートします。
FormDataIntegrationClientオブジェクトのimportDataメソッドを呼び出し、次の値を渡すことによって、PDF フォームにデータをインポートします。- PDF フォームを格納する
BLOBオブジェクト。 - フォームデータが格納された
BLOBオブジェクト。
importDataメソッドは、XML データソースにあるデータを含む PDF フォームを格納するBLOBオブジェクトを返します。 - PDF フォームを格納する
-
PDF フォームを PDF ファイルとして保存します。
- コンストラクターを呼び出し、PDF ファイルの場所を表す文字列値を渡すことによって、
System.IO.FileStreamオブジェクトを作成します。 importDataメソッドによって返されたBLOBオブジェクトのデータコンテンツを格納するバイト配列を作成します。BLOBオブジェクトのMTOMフィールドの値を取得して、バイト配列に入力します。- コンストラクターを呼び出し、
System.IO.FileStreamオブジェクトを渡すことによって、System.IO.BinaryWriterオブジェクトを作成します。 System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出して、バイト配列を渡すことによって、バイト配列の内容を PDF ファイルに書き込みます。
- コンストラクターを呼び出し、PDF ファイルの場所を表す文字列値を渡すことによって、
関連トピック:
フォームデータのエクスポート exporting-form-data
Form Data Integration サービスを使用して、インタラクティブ PDF フォームからフォームデータをエクスポートできます。エクスポートされるデータの形式は、フォームタイプによって異なります。フォームタイプが、Acrobat で作成された Acrobat フォームであれば、エクスポートされるデータは XFDF になります。フォームタイプが、Designer で作成された XML フォームであれば、エクスポートされるデータは XDP になります。
手順の概要 summary_of_steps-1
PDF フォームからフォームデータをエクスポートするには、次の手順を実行します。
- プロジェクトファイルを含める
- フォームデータ統合サービスクライアントを作成します。
- PDF フォームを参照します。
- PDF フォームからデータを書き出します。
- エクスポートしたデータを XML ファイルとして保存します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めるようにします。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-formdataintegration-client.jar
- adobe-utilities.jar(AEM Forms を JBoss にデプロイする場合に必要)
- jbossall-client.jar(AEM Forms が JBoss にデプロイされている場合に必要)
Form Data Integration サービスクライアントを作成
PDF フォーム Client API にプログラムによってデータをインポートする前に、Data Integration サービスクライアントを作成する必要があります。サービスクライアントを作成する際は、サービスを呼び出すために必要な接続設定を定義します。詳しくは、接続プロパティの設定を参照してください。
PDF フォームの参照
PDF フォームからデータを書き出すには、Designer または Acrobat で作成され、フォームデータを含む PDF フォームを参照する必要があります。空の PDF フォームからデータを書き出そうとすると、空の XML スキーマを取得することになります。
PDF フォームからのデータの書き出し
フォームデータを含む PDF フォームを参照した後で、フォームからデータを書き出すことができます。データは、フォームに基づく XML スキーマ内で書き出されます。
フォームデータを XML ファイルとして保存する
フォームデータを書き出した後は、データを XML ファイルとして保存できます。XML ファイルとして保存した XML ファイルを XML ビューアで開くと、フォームデータを表示できます。
関連トピック
Java API を使用したフォームデータの書き出し export-form-data-using-the-java-api
フォームデータ統合 API(Java)を使用してフォームデータを書き出すには、次の手順を実行します。
-
プロジェクトファイルを含めます。
adobe-formdataintegration-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
フォームデータ統合サービスクライアントを作成します。
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクタを使用して
FormDataIntegrationClientオブジェクトを渡すことによって、ServiceClientFactoryオブジェクトを作成します。
- 接続プロパティを含む
-
PDF フォームを参照します。
- コンストラクターを使用して
java.io.FileInputStreamオブジェクトを作成し、書き出すデータを含む PDF フォームの場所を指定する文字列値を渡します。 com.adobe.idp.Documentコンストラクターを使用して、PDF フォームを格納するcom.adobe.idp.Documentオブジェクトを作成します。PDF フォームを含むjava.io.FileInputStreamオブジェクトをコンストラクターに渡します。
- コンストラクターを使用して
-
PDF フォームからデータを書き出します。
FormDataIntegrationClientオブジェクトのexportDataメソッドを呼び出してデータを書き出し、PDF フォームを格納するcom.adobe.idp.Documentオブジェクトを渡します。このメソッドは、フォームデータを XML スキーマとして格納するcom.adobe.idp.Documentオブジェクトを返します。 -
PDF フォームを PDF ファイルとして保存します。
java.io.Fileオブジェクトを作成し、ファイル拡張子が XML であることを確認します。DocumentオブジェクトのcopyToFileメソッドを呼び出して、Documentオブジェクトの内容をファイルにコピーします(exportDataメソッドで返されたDocumentオブジェクトを使用していることを確認します)。
関連情報
Web サービス API を使用したフォームデータの書き出し export-form-data-using-the-web-service-api
フォームデータ統合 API(web サービス)を使用してフォームデータを書き出すには、次の手順を実行します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/FormDataIntegration?WSDL&lc_version=9.0.1を使用するようにします。localhostを、AEM Forms をホストするサーバーの IP アドレスに置き換えます。
-
フォームデータ統合サービスクライアントを作成します。
-
デフォルトのコンストラクターを使用して
FormDataIntegrationClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクターを使用してFormDataIntegrationClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例えば、http://localhost:8080/soap/services/FormDataIntegration?blob=mtom) 。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。ただし、?blob=mtomを指定して MTOM を使用します。 -
FormDataIntegrationClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
FormDataIntegrationClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
FormDataIntegrationClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
-
-
PDF フォームを参照します。
- コンストラクタを使用して
BLOBオブジェクトを作成します。このBLOBオブジェクトは、データの書き出し元の PDF フォームを格納するために使用されます。 - コンストラクターを呼び出して
System.IO.FileStreamオブジェクトを作成します。PDF フォームの場所とファイルを開くモードを指定する文字列値を渡します。 System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡すことにより、バイト配列にストリームデータを入力します。MTOMフィールドにバイト配列の内容を割り当てて、BLOBオブジェクトにデータを入力します。
- コンストラクタを使用して
-
PDF フォームからデータを書き出します。
FormDataIntegrationClientオブジェクトのexportDataメソッドを呼び出して PDF フォームにデータをインポートし、PDF フォームを格納するBLOBオブジェクトを渡します。このメソッドは、フォームデータを XML スキーマとして格納するBLOBオブジェクトを返します。 -
PDF フォームを PDF ファイルとして保存します。
- コンストラクターを呼び出し、XML ファイルの場所を表す文字列値を渡すことで
System.IO.FileStreamオブジェクトを作成します。 exportDataメソッドによって返されたBLOBオブジェクトのデータコンテンツを格納するバイト配列を作成します。BLOBオブジェクトのMTOMフィールドの値を取得して、バイト配列に入力します。- コンストラクターを呼び出して
System.IO.FileStreamオブジェクトを渡すことにより、System.IO.BinaryWriterオブジェクトを作成します。 System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出してバイト配列を渡すことにより、バイト配列の内容を XML ファイルに書き込みます。
- コンストラクターを呼び出し、XML ファイルの場所を表す文字列値を渡すことで
関連情報