署名フィールドの追加
デジタル署名は、署名の画像表示を含むフォームフィールドである署名フィールドに表示されます。署名フィールドは、表示または非表示に設定することができます。署名者は既存の署名フィールドを使用することができます。また、プログラムによって署名フィールドを追加することもできます。どちらの場合においても、PDF ドキュメントに署名するには、署名フィールドが存在している必要があります。
プログラムによって署名フィールドを追加するには、Signature サービス Java API や 署名 Web サービス API を使用します。PDF ドキュメントに複数の署名フィールドを追加できます。ただし、各署名フィールド名は一意である必要があります。
手順の概要
PDF ドキュメントに署名フィールドを追加するには、次のタスクを実行します。
- プロジェクトファイルを含めます。
- Signature クライアントを作成します。
- 署名フィールドが追加された PDF ドキュメントを取得します。
- 署名フィールドを追加します。
- PDF ドキュメントを PDF ファイルとして保存します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-utilities.jar(AEM Forms が JBoss にデプロイされている場合に必要)
- jbossall-client.jar(AEM Formsが JBoss にデプロイされている場合に必要)
Signature クライアントの作成
Signature サービスの操作をプログラムで実行する前に、Signature サービスクライアントを作成する必要があります。
署名フィールドが追加された PDF ドキュメントを取得する
署名フィールドが追加された PDF ドキュメントを取得する。
署名フィールドを追加する
PDFドキュメントに正常に署名フィールドを追加するには、署名フィールドの場所を特定する座標値を指定します。(非表示の署名フィールドを追加する場合、これらの値は不要です)。また、署名が署名フィールドに適用された後にロックされる PDF ドキュメント内のフィールドを指定することもできます。
PDF ドキュメントを PDF ファイルとして保存する
Signature サービスが PDF ドキュメントに署名フィールドを追加した後、そのドキュメントを PDF ファイルとして保存すると、ユーザーは、Acrobat または Adobe Reader でそのドキュメントを開くことができます。
関連トピック
Java API を使用した署名フィールドの追加
Signature API (Java) を使用して署名フィールドを追加します。
-
プロジェクトファイルを含める
Java プロジェクトのクラスパスに、adobe-signatures-client.jar などのクライアント JAR ファイルを含めます。
-
Signature クライアントの作成
- 接続プロパティを含む
ServiceClientFactory
オブジェクトを作成します。 SignatureServiceClient
オブジェクトを作成するには、コンストラクタを使用して、ServiceClientFactory
オブジェクトを渡します。
- 接続プロパティを含む
-
署名フィールドが追加された PDF ドキュメントを取得する
- 署名フィールドが追加された PDF ドキュメントを表す
java.io.FileInputStream
オブジェクトを作成するには、コンストラクタを使用して、PDF ドキュメントの場所を指定する文字列値を渡してください。 com.adobe.idp.Document
オブジェクトを作成するには、コンストラクタを使用して、java.io.FileInputStream
オブジェクトを渡します。
- 署名フィールドが追加された PDF ドキュメントを表す
-
署名フィールドを追加する
-
コンストラクタを使用して、署名フィールドの場所を指定する
PositionRectangle
オブジェクトを作成します。コンストラクタ内で、座標値を指定します。 -
必要に応じて、デジタル署名が署名フィールドに適用された際にロックするフィールドを指定する
FieldMDPOptions
オブジェクトを作成します。 -
PDF ドキュメントに署名フィールドを追加するには、
SignatureServiceClient
オブジェクトのaddSignatureField
メソッドを呼び出して、次の値を渡します。com.adobe.idp
です。署名フィールドを追加する PDF ドキュメントを表すDocument
オブジェクトです。- 署名フィールドの名前を指定する文字列値です。
- 署名フィールドを追加するページ番号を表す
java.lang.Integer
値です。 - 署名フィールドの場所を指定する
PositionRectangle
オブジェクトです。 - デジタル署名が署名フィールドに適用された後にロックされる PDF ドキュメント内のフィールドを指定する
FieldMDPOptions
オブジェクトです。このパラメータ値はオプションで、null
を渡すことができます。
-
様々な実行時の値を指定する
PDFSeedValueOptions
オブジェクトです。このパラメータ値はオプションで、null
を渡すことができます。addSignatureField
メソッドはcom.adobe.idp
を返します。署名フィールドを含む PDF ドキュメントを表すDocument
オブジェクトです。
メモ
SignatureServiceClient
オブジェクトのaddInvisibleSignatureField
メソッドを呼び出して、非表示の署名フィールドを追加します。 -
-
PDFドキュメントを PDF ファイルとして保存する
java.io.File
オブジェクトを作成し、ファイル拡張子が .pdf であることを確認します。com.adobe.idp
を呼び出します。Document
オブジェクトのcopyToFile
メソッドで、Document
オブジェクトの内容をファイルにコピーします。必ずcom.adobe.idp
を使用してください。addSignatureField
メソッドによって返されたDocument
オブジェクトです。
Web サービス API を使用して署名フィールドを追加する
Signature API(Web サービス)を使用して署名フィールドを追加するには:
-
プロジェクトファイルを含める
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
を使用するようにします。メモ
localhost
を AEM Forms をホストするサーバーの IP アドレスに置き換えます。 -
Signature クライアントの作成
-
デフォルトのコンストラクタを使用して
SignatureServiceClient
オブジェクトを作成します。 -
System.ServiceModel.EndpointAddress
コンストラクタを使用してSignatureServiceClient.Endpoint.Address
オブジェクトを作成します。WSDL を 指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL
)。lc_version
属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
SignatureServiceClient.Endpoint.Binding
フィールドの値を取得して、System.ServiceModel.BasicHttpBinding
オブジェクトを作成します。戻り値をBasicHttpBinding
にキャストします。 -
System.ServiceModel.BasicHttpBinding
オブジェクトのMessageEncoding
フィールドをWSMessageEncoding.Mtom
に設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
SignatureServiceClient.ClientCredentials.UserName.UserName
フィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
SignatureServiceClient.ClientCredentials.UserName.Password
フィールドに割り当てます。 - 定数値
HttpClientCredentialType.Basic
をBasicHttpBindingSecurity.Transport.ClientCredentialType
フィールドに割り当てます。 - フィールド
BasicHttpBindingSecurity.Security.Mode
に定数値BasicHttpSecurityMode.TransportCredentialOnly
を割り当てます。
-
-
署名フィールドが追加された PDF ドキュメントを取得する
- コンストラクタを使用して
BLOB
オブジェクトを作成します。BLOB
オブジェクトは、署名フィールドを含む PDF ドキュメントを保存するために使用されます。 System.IO.FileStream
オブジェクトを作成するには、コンストラクターを呼び出して、PDF ドキュメントのファイルの場所を表す文字列値とファイルを開くモードを渡します。System.IO.FileStream
オブジェクトのコンテンツを保存するバイト配列を作成します。 バイト配列のサイズは、System.IO.FileStream
オブジェクトのLength
プロパティを取得することで決定できます。- バイト配列にストリームデータを入力するには、
System.IO.FileStream
オブジェクトのRead
メソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡します。 BLOB
オブジェクトを入力するには、MTOM
プロパティにバイト配列のコンテンツを割り当てます。
- コンストラクタを使用して
-
署名フィールドを追加する
PDF ドキュメントに署名フィールドを追加するには、
SignatureServiceClient
オブジェクトのaddSignatureField
メソッドを呼び出して、次の値を渡します。- 署名フィールドが追加された PDF ドキュメントを表す
BLOB
オブジェクトです。 - 署名フィールド名を指定する文字列値です。
- 署名フィールドを追加するページ番号を表す整数値です。
- 署名フィールドの場所を指定する
PositionRect
オブジェクトです。 - デジタル署名が署名フィールドに適用された後にロックされる PDF ドキュメント内のフィールドを指定する
FieldMDPOptions
オブジェクトです。このパラメータ値はオプションで、null
を渡すことができます。 - 様々な実行時の値を指定する
PDFSeedValueOptions
オブジェクトです。このパラメータ値はオプションで、null
を渡すことができます。
addSignatureField
メソッドは、署名フィールドを含む PDF ドキュメントを表すBLOB
オブジェクトを返します。 - 署名フィールドが追加された PDF ドキュメントを表す
-
PDFドキュメントを PDF ファイルとして保存する
System.IO.FileStream
オブジェクトを作成するには、コンストラクターを呼び出して、署名フィールドを含む PDF ドキュメントのファイルの場所を表す文字列値およびファイルを開くモードを渡します。addSignatureField
メソッドによって返されたBLOB
オブジェクトのコンテンツを格納するバイト配列を作成します。BLOB
オブジェクトのbinaryData
データメンバーの値を取得して、バイト配列にデータを入力します。- コンストラクターを呼び出して
System.IO.FileStream
オブジェクトを渡すことによって、System.IO.BinaryWriter
オブジェクトを作成します。 System.IO.BinaryWriter
オブジェクトのWrite
メソッドを呼び出してバイト配列を渡すことにより、バイト配列の内容を PDF ファイルに書き込みます。
署名フィールド名の取得
署名または認証する PDF ドキュメント内のすべての署名フィールドの名前を取得できます。PDF ドキュメント内の署名フィールド名が分からない場合や、名前を検証したい場合に、プログラムによって名前を取得することができます。Signature サービスは、form1[0].grantApplication[0].page1[0].SignatureField1[0]
のような署名フィールドの完全修飾名を返します。
手順の概要
署名フィールド名を取得するには、次のタスクを実行します。
- プロジェクトファイルを含めます。
- Signature クライアントを作成します。
- 署名フィールドを含む PDF ドキュメントを取得します。
- 署名フィールド名を取得します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-utilities.jar(AEM Forms が JBoss にデプロイされている場合に必要)
- jbossall-client.jar(AEM Formsが JBoss にデプロイされている場合に必要)
これらの JAR ファイルの場所については、AEM Forms Java ライブラリファイルを含めるを参照してください。
署名クライアントの作成
Signature サービスの操作をプログラムで実行する前に、Signature サービスクライアントを作成する必要があります。
署名フィールドを含む PDF ドキュメントを取得する
署名フィールドを含む PDF ドキュメントを取得します。
署名フィールド名の取得
1 つ以上の署名フィールドを含む PDF ドキュメントを取得した後に、署名フィールド名を取得できます。
関連トピック
Java API を使用した署名フィールド名の取得
Signature API (Java) を使用して署名フィールド名を取得します。
-
プロジェクトファイルを含める
adobe-signatures-client.jar などのクライアント JAR ファイルを Java プロジェクトのクラスパスに含めます。
-
Signature クライアントの作成
- 接続プロパティを含む
ServiceClientFactory
オブジェクトを作成します。 - コンストラクタを使用して
ServiceClientFactory
オブジェクトを渡すことによって、SignatureServiceClient
オブジェクトを作成します。
- 接続プロパティを含む
-
署名フィールドを含む PDF ドキュメントを取得する
- 署名フィールドを含む PDF ドキュメントを表す
java.io.FileInputStream
オブジェクトを作成するには、コンストラクターを使用し、PDF ドキュメントの場所を指定する文字列値を渡します。 - コンストラクタを使用して
java.io.FileInputStream
オブジェクトを渡すことによって、com.adobe.idp.Document
オブジェクトを作成します。
- 署名フィールドを含む PDF ドキュメントを表す
-
署名フィールド名の取得
- 署名フィールド名を取得するには、
SignatureServiceClient
オブジェクトのgetSignatureFieldList
メソッドを呼び出して、署名フィールドを含む PDF ドキュメントを含むcom.adobe.idp.Document
オブジェクトを渡します。このメソッドは、各要素にPDFSignatureField
オブジェクトをが含まれるjava.util.List
オブジェクトを返します。このオブジェクトを使用すると、署名フィールドが表示されているかどうかなど、署名フィールドに関する追加情報を取得できます。 java.util.List
オブジェクトを繰り返して、署名フィールド名があるかどうかを確認します。PDF ドキュメントの各署名フィールドに対して、個別のPDFSignatureField
オブジェクトを取得できます。署名フィールドの名前を取得するには、PDFSignatureField
オブジェクトのgetName
メソッドを呼び出します。このメソッドは、署名フィールド名を指定する文字列値を返します。
- 署名フィールド名を取得するには、
Web サービス API を使用した署名フィールドの取得
Signature API(Web サービス)を使用して署名フィールド名を取得します。
-
プロジェクトファイルを含める
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
を使用するようにします。メモ
localhost
を AEM Forms をホストするサーバーの IP アドレスに置き換えます。 -
Signature クライアントの作成
-
デフォルトのコンストラクタを使用して
SignatureServiceClient
オブジェクトを作成します。 -
System.ServiceModel.EndpointAddress
コンストラクタを使用してSignatureServiceClient.Endpoint.Address
オブジェクトを作成します。WSDL を 指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/SignatureService?WSDL
)。lc_version
属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
SignatureServiceClient.Endpoint.Binding
フィールドの値を取得して、System.ServiceModel.BasicHttpBinding
オブジェクトを作成します。戻り値をBasicHttpBinding
にキャストします。 -
System.ServiceModel.BasicHttpBinding
オブジェクトのMessageEncoding
フィールドをWSMessageEncoding.Mtom
に設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
SignatureServiceClient.ClientCredentials.UserName.UserName
フィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
SignatureServiceClient.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
メソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡します。 BLOB
オブジェクトを入力するには、MTOM
フィールドにバイト配列のコンテンツを割り当てます。
- コンストラクタを使用して
-
署名フィールド名の取得
- 署名フィールド名を取得するには、
SignatureServiceClient
オブジェクトのgetSignatureFieldList
メソッドを呼び出して、署名フィールドを含む PDF ドキュメントを含むBLOB
オブジェクトを渡します。このメソッドは、各要素にPDFSignatureField
オブジェクトを含むMyArrayOfPDFSignatureField
コレクションオブジェクトを返します。 MyArrayOfPDFSignatureField
オブジェクトを繰り返して、署名フィールド名があるかどうかを確認します。PDF ドキュメントの各署名フィールドに対して、PDFSignatureField
オブジェクトを取得できます。署名フィールドの名前を取得するには、PDFSignatureField
オブジェクトのgetName
メソッドを呼び出します。このメソッドは、署名フィールド名を指定する文字列値を返します。
- 署名フィールド名を取得するには、