PDF ドキュメントの暗号化および復号化 encrypting-and-decrypting-pdf-documents
このドキュメントのサンプルと例は、JEE 環境の AEM Forms のみを対象としています。
暗号化サービスについて
暗号化サービスを使用すると、ドキュメントの暗号化および復号化が可能になります。ドキュメントを暗号化すると、その内容は判読できなくなります。許可されたユーザーは、ドキュメントを復号化して、コンテンツにアクセスできます。PDF ドキュメントがパスワードで暗号化されている場合、Adobe Reader または Adobe Acrobat でドキュメントを表示するには、ユーザーはオープンパスワードを指定する必要があります。同様に、PDF ドキュメントが証明書で暗号化されている場合、ユーザーが PDF ドキュメントを復号化するには、その PDF ドキュメントの暗号化に使用された証明書(秘密鍵)に対応した公開鍵が必要です。
暗号化サービスを使用して、次のタスクを実行できます。
- パスワードで PDF ドキュメントを暗号化します。(PDF ドキュメントのパスワードによる暗号化を参照してください)。
- 証明書で PDF ドキュメントを暗号化します。(証明書による PDF ドキュメントの暗号化を参照してください)。
- PDF ドキュメントからパスワードベースの暗号化を削除します。(パスワード暗号化を削除を参照してください)。
- PDF ドキュメントから証明書ベースの暗号化を削除します。(証明書ベースの暗号化の削除を参照してください)。
- 他のサービス操作を実行できるように、PDF ドキュメントのロックを解除します。例えば、パスワードで暗号化された PDF ドキュメントのロックが解除された後に、デジタル署名を適用できます。(暗号化された PDF ドキュメントのロック解除を参照してください)。
- 保護された PDF ドキュメントの暗号化のタイプを決定します。(暗号化タイプの決定を参照してください)。
パスワードを使用した PDF ドキュメントの暗号化 encrypting-pdf-documents-with-a-password
PDF ドキュメントをパスワードで暗号化する場合、ユーザーは Adobe Reader または Acrobat で PDF ドキュメントを開くためのパスワードを指定する必要があります。また、ドキュメントにデジタル署名を行うなど、別の AEM Forms 操作を行う前に、パスワードで暗号化された PDF ドキュメントのロックを解除しておく必要があります。
手順の概要 summary-of-steps
パスワードを使用して PDF ドキュメントを暗号化するには、次の手順に従います。
- プロジェクトファイルを含めます。
- 暗号化クライアント API オブジェクトを作成します。
- 暗号化する PDF ドキュメントを取得します。
- 暗号化の実行時オプションを設定します。
- パスワードを追加します。
- 暗号化された PDF ドキュメントを PDF ファイルとして保存します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-encryption-client.jar
- adobe-utilities.jar(AEM Forms が JBoss にデプロイされている場合に必要)
- jbossall-client.jar(AEM Formsが JBoss にデプロイされている場合に必要)
暗号化クライアント API オブジェクトを作成
プログラムによって暗号化サービスの操作を実行するには、暗号化サービスクライアントを作成する必要があります。
暗号化する PDF ドキュメントを取得
パスワードを使用してドキュメントを暗号化するには、暗号化されていない PDF ドキュメントを取得します。既に暗号化されている PDF ドキュメントを保護しようとすると、例外が発生します。
暗号化の実行時オプションを設定
パスワードを使用して PDF ドキュメントを暗号化するには、2 つのパスワード値を含む 4 つの値を指定します。最初のパスワード値は、PDF ドキュメントの暗号化に使用され、PDF ドキュメントを開く際に指定する必要があります。2 つ目のパスワード値は、プライマリパスワード値と呼ばれ、PDF ドキュメントから暗号化を削除するために使用されます。パスワード値では大文字と小文字が区別され、これら 2 つのパスワード値を同じ値にすることはできません。
暗号化する PDF ドキュメントリソースを指定します。PDF ドキュメント全体、ドキュメントのメタデータ以外のすべて、またはドキュメントの添付ファイルのみを暗号化できます。ドキュメントの添付ファイルのみを暗号化する場合、添付ファイルにアクセスしようとすると、ユーザーにパスワードの入力が求められます。
PDF ドキュメントを暗号化する際に、保護されたドキュメントに関連付けられた権限を指定できます。権限を指定すると、パスワードで暗号化されたPDF ドキュメントを開いたユーザーが実行できるアクションを制御できます。例えば、フォームデータを正常にエクストラクトするには、以下の権限を設定する必要があります。
- PASSWORD_EDIT_ADD
- PASSWORD_EDIT_MODIFY
PasswordEncryptionPermission 列挙値として指定します。パスワードを追加
保護されていない PDF ドキュメントを取得し、暗号化の実行時の値を設定した後、パスワードを PDF ドキュメントに追加できます。
暗号化された PDF ドキュメントを PDF ファイルとして保存
パスワードで暗号化された PDF ドキュメントは、PDF ファイルとして保存できます。
関連トピック
Java API を使用して PDFドキュメントを暗号化 encrypt-a-pdf-document-using-the-java-api
暗号化 API(Java)を使用して、PDF ドキュメントをパスワードで暗号化します。
-
プロジェクトファイルを含めます。
Java プロジェクトのクラスパスにクライアントの JAR ファイル(adobe-livecycle-client.jar など)を含めます。
-
暗号化クライアント API を作成します。
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactoryオブジェクトを渡すことによって、EncryptionServiceClientオブジェクトを作成します。
- 接続プロパティを含む
-
暗号化する PDF ドキュメントを取得します。
- コンストラクターを使用して、PDF ドキュメントの場所を指定する文字列値を渡すことによって、
java.io.FileInputStreamオブジェクトを作成します。 com.adobe.idp.Documentオブジェクト作成するには、そのオブジェクトのコンストラクターを使用して、java.io.FileInputStreamオブジェクトを渡します。
- コンストラクターを使用して、PDF ドキュメントの場所を指定する文字列値を渡すことによって、
-
暗号化の実行時オプションを設定します。
- コンストラクターを使用して
PasswordEncryptionOptionSpecオブジェクトを作成します。 PasswordEncryptionOptionSpecオブジェクトのsetEncryptOptionメソッドを呼び出し、暗号化するドキュメントリソースを指定するPasswordEncryptionOption列挙値を渡すことによって、暗号化する PDF ドキュメントリソースを指定します。例えば、メタデータと添付ファイルを含む PDF ドキュメント全体を暗号化するには、PasswordEncryptionOption.ALLと指定します。ArrayListコンストラクターを使用して、暗号化の権限を保存するjava.util.Listオブジェクトを作成します。java.util.Listオブジェクトのaddメソッドを呼び出し、設定する権限に対応する列挙値を渡すことにより、権限を指定してください。例えば、ユーザーが PDF ドキュメント内のデータをコピーできる権限を設定するには、PasswordEncryptionPermission.PASSWORD_EDIT_COPYと指定してください。(設定する権限ごとに、このステップを繰り返します)。PasswordEncryptionOptionSpecオブジェクトのsetCompatabilityメソッドを呼び出し、Acrobat の互換性レベルを指定する列挙値を渡して、Acrobat の互換性オプションを指定します。例えば、PasswordEncryptionCompatability.ACRO_7と指定できます。- パスワードの値を指定します。この値を使用すると、
PasswordEncryptionOptionSpecオブジェクトのsetDocumentOpenPasswordメソッドを呼び出し、開くパスワードを表す文字列値を渡すことによって、ユーザーが暗号化された PDF ドキュメントを開くことができます。 - プライマリパスワードの値を指定します。この値を使用すると、
PasswordEncryptionOptionSpecオブジェクトのsetPermissionPasswordメソッドを呼び出し、プライマリパスワードを表す文字列値を渡すことによって、ユーザーが暗号化された PDF ドキュメントから暗号化を削除することができます。
- コンストラクターを使用して
-
パスワードを追加します。
EncryptionServiceClientオブジェクトのencryptPDFUsingPasswordメソッドを呼び出して、以下の値を渡すことにより、PDF ドキュメントを暗号化します。- パスワードで暗号化する PDF ドキュメントを含む
com.adobe.idp.Documentオブジェクト。 - 暗号化の実行時オプションを含む
PasswordEncryptionOptionSpecオブジェクト。
この
encryptPDFUsingPasswordメソッドは、パスワードで暗号化されたPDF ドキュメントを含むcom.adobe.idp.Documentオブジェクトを返します。 - パスワードで暗号化する PDF ドキュメントを含む
-
暗号化された PDF ドキュメントを PDF ファイルとして保存します。
java.io.Fileオブジェクトを作成し、ファイル拡張子が .pdf であることを確認します。com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、com.adobe.idp.Documentオブジェクトのコンテンツをファイルにコピーします。encryptPDFUsingPasswordメソッドから返されたcom.adobe.idp.Documentオブジェクトを必ず使用してください。
関連トピック
Web サービス API を使用した PDF ドキュメントの暗号化 encrypting-a-pdf-document-using-the-web-service-api
暗号化 API(web サービス)を使用して、PDF ドキュメントをパスワードで暗号化します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1を使用するようにします。note note NOTE localhostを、AEM Forms をホストするサーバーの IP アドレスに置換します。 -
暗号化クライアント API オブジェクトを作成します。
-
デフォルトのコンストラクターを使用して、
EncryptionServiceClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用して、EncryptionServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/EncryptionService?WSDL)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
EncryptionServiceClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
EncryptionServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
EncryptionServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをBasicHttpBindingSecurity.Security.Modeフィールドに割り当てます。
-
-
暗号化する PDF ドキュメントを取得します。
BLOBオブジェクトのコンストラクタを使用して、このオブジェクトを作成します。BLOBオブジェクトを使用して、証明書で暗号化された PDF ドキュメントを保存します。- コンストラクターを呼び出して、暗号化する PDF ドキュメントファイルの場所とファイルを開くモードを表す文字列の値を渡すことにより、
System.IO.FileStreamオブジェクトを作成します。 System.IO.FileStreamオブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡すことにより、バイト配列にストリームデータを入力します。- バイト配列の内容を
BLOBオブジェクトのMTOMデータメンバーに割り当てることにより、BLOBオブジェクトを入力します。
-
暗号化の実行時オプションを設定します。
PasswordEncryptionOptionSpecオブジェクトのコンストラクタを使用して、このオブジェクトを作成します。PasswordEncryptionOption列挙値をPasswordEncryptionOptionSpecオブジェクトのencryptOptionデータメンバーに割り当てることにより、暗号化する PDF ドキュメントリソースを指定します。メタデータと添付ファイルを含む PDF 全体を暗号化するには、PasswordEncryptionOption.ALLをこのデータメンバーに割り当てます。PasswordEncryptionCompatability列挙値をPasswordEncryptionOptionSpecオブジェクトのcompatabilityデータメンバーに割り当てることにより、Acrobat の互換性オプションを指定します。例えば、PasswordEncryptionCompatability.ACRO_7をこのデータメンバーに割り当てます。- ユーザーが暗号化された PDF ドキュメントを開くためのパスワード値を指定します。この値を指定するには、開封パスワードを表す文字列値を
PasswordEncryptionOptionSpecオブジェクトのdocumentOpenPasswordデータメンバーに割り当てます。 - ユーザーが PDF ドキュメントの暗号化を削除するためのパスワード値を指定します。この値を指定するには、プライマリパスワードを表す文字列値を
PasswordEncryptionOptionSpecオブジェクトのpermissionPasswordデータメンバーに割り当てます。
-
パスワードを追加します。
EncryptionServiceClientオブジェクトのencryptPDFUsingPasswordメソッドを呼び出して、以下の値を渡すことにより、PDF ドキュメントを暗号化します。- パスワードで暗号化する PDF ドキュメントを含む
BLOBオブジェクト。 - 暗号化の実行時オプションを含む
PasswordEncryptionOptionSpecオブジェクト。
この
encryptPDFUsingPasswordメソッドは、パスワードで暗号化されたPDF ドキュメントを含むBLOBオブジェクトを返します。 - パスワードで暗号化する PDF ドキュメントを含む
-
暗号化された PDF ドキュメントを PDF ファイルとして保存します。
System.IO.FileStreamオブジェクトを作成するには、このオブジェクトのコンストラクターを呼び出し、保護された PDF ドキュメントのファイルの場所を表す文字列の値を渡します。encryptPDFUsingPasswordメソッドが返したBLOBオブジェクトのデータコンテンツを格納するバイト配列を作成します。BLOBオブジェクトのMTOMデータメンバーの値を取得して、バイト配列を生成します。- コンストラクターを使用して
System.IO.BinaryWriterオブジェクトを渡すことによって、System.IO.FileStreamオブジェクトを作成します。 System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出して、バイト配列を渡すことによって、バイト配列の内容を PDF ファイルに書き込みます。
関連トピック:
証明書による PDF ドキュメントの暗号化 encrypting-pdf-documents-with-certificates
証明書ベースの暗号化では、公開鍵によるテクノロジーを使用して、特定の受信者用にドキュメントを暗号化できます。様々な受信者に、ドキュメントに対する異なる権限を与えることができます。公開鍵のテクノロジーによって、暗号化の様々な側面が可能になります。アルゴリズムによって、大きい数字が 2 つ生成されます。この数字は以下のような特性を持つ 鍵 として知られています。
- 鍵のうち 1 つは、1 組のデータを暗号化するために使用されます。その後、もう一方の鍵のみがデータの復号に使用できます。
- 1 つの鍵を、もう一方の鍵と区別することは不可能です。
鍵のうち 1 つは、ユーザーの秘密鍵として機能します。当該のユーザーのみがこの鍵にアクセスできることが重要です。もう 1 つの鍵はユーザーの公開鍵です。これは、他のユーザーと共有できます。
公開鍵証明書には、ユーザーの公開鍵と識別情報が含まれます。証明書の保存には、X.509 形式が使用されます。通常、証明書は認証局(CA)で発行および電子署名されます。CA は、証明書の有効性における信頼度を提供する、承認されたエンティティです。証明書には有効期限があり、この期限を過ぎると無効になります。また、証明書の失効リスト(CRL)には、有効期限よりも前に失効した証明書に関する情報が示されます。CRL は認証局によって定期的に発行されます。証明書の失効ステータスは、ネットワークを通じてオンライン証明書ステータスプロトコル(OCSP)から取得することもできます。
手順の概要 summary_of_steps-1
証明書を使用して PDF ドキュメントを暗号化するには、以下の手順に従います。
- プロジェクトファイルを含めます。
- 暗号化クライアント API オブジェクトを作成します。
- 暗号化する PDF ドキュメントを取得します。
- 証明書を参照します。
- 暗号化の実行時オプションを設定します。
- 証明書で暗号化された PDF ドキュメントを作成します。
- 暗号化された PDF ドキュメントを PDF ファイルとして保存します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-encryption-client.jar
- adobe-utilities.jar(AEM Forms が JBoss Application Server にデプロイされている場合に必要)
- jbossall-client.jar(AEM Forms が JBoss Application Server にデプロイされている場合に必要)
暗号化クライアント API オブジェクトを作成
プログラムによって暗号化サービスの操作を実行するには、暗号化サービスクライアントを作成する必要があります。Java Encryption Service API を使用している場合は、EncrytionServiceClient オブジェクトを作成します。Web サービス暗号化サービス API を使用している場合は、EncryptionServiceService オブジェクトを作成します。
暗号化する PDF ドキュメントを取得
暗号化するためには、暗号化されていない PDF ドキュメントを取得します。既に暗号化されている PDF ドキュメントを保護しようとすると、例外が発生します。
証明書を参照
PDF ドキュメントを証明書で暗号化するには、PDF ドキュメントの暗号化に使用する証明書を参照します。証明書は .cer ファイル、.crt ファイル、.pem ファイルのいずれかです。PKCS#12 ファイルは、対応する証明書とともに秘密鍵を保存するために使用します。
証明書を使用して PDF ドキュメントを暗号化する場合は、保護されたドキュメントに関連付けられている権限を指定します。権限を指定すると、証明書で暗号化された PDF ドキュメントを開いたユーザーが実行できるアクションを制御できます。
暗号化実行時オプションの設定
暗号化する PDF ドキュメントリソースを指定します。PDFドキュメント全体、ドキュメントのメタデータを除くすべて、またはドキュメントの添付ファイルのみを暗号化できます。
証明書で暗号化された PDF ドキュメントの作成
セキュリティで保護されていない PDF ドキュメントを取得し、証明書を参照しながら、実行時オプションを設定したら、証明書で暗号化された PDF ドキュメントを作成できます。暗号化された PDF ドキュメントを復号化するには、対応する公開鍵が必要になります。
暗号化された PDF ドキュメントを PDF ファイルとして保存
暗号化された PDF ドキュメントは、PDF ファイルとして保存できます。
関連トピック
Java API を使用して証明書で PDF ドキュメントを暗号化
Java API を使用して証明書で PDF ドキュメントを暗号化 encrypt-a-pdf-document-with-a-certificate-using-the-java-api
暗号化 API(Java)を使用して、証明書により PDF ドキュメントを暗号化します。
-
プロジェクトファイルを含めます。
Java プロジェクトのクラスパスにクライアントの JAR ファイル(adobe-livecycle-client.jar など)を含めます。
-
Encryption Client API オブジェクトを作成する。
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactoryオブジェクトを渡すことによって、EncryptionServiceClientオブジェクトを作成します。
- 接続プロパティを含む
-
暗号化する PDF ドキュメントを取得します。
- コンストラクターを使用して、PDF ドキュメントの場所を指定する文字列値を渡すことによって、
java.io.FileInputStreamオブジェクトを作成します。 - コンストラクターを使用して
com.adobe.idp.Documentオブジェクトを渡すことによって、java.io.FileInputStreamオブジェクトを作成します。
- コンストラクターを使用して、PDF ドキュメントの場所を指定する文字列値を渡すことによって、
-
証明書を参照する。
- コンストラクターを使用して権限情報を格納する
java.util.Listオブジェクトを作成します。 java.util.Listオブジェクトのaddメソッドを呼び出して、セキュリティで保護された PDF ドキュメントを開くユーザーに付与する権限を表す列挙値(CertificateEncryptionPermissions)を渡すことにより、暗号化されたドキュメントに関連する権限を指定します。例えば、すべての権限を指定する場合は、CertificateEncryptionPermissions.PKI_ALL_PERMを指定します。- コンストラクターを使用して
Recipientを作成します。 - コンストラクターを使用して、証明書の場所を指定する文字列値を渡すことにより、PDF ドキュメントの暗号化に使用する証明書を表す
java.io.FileInputStreamオブジェクトを作成します。 - コンストラクターを使用し、証明書を表す
java.io.FileInputStreamオブジェクトを渡すことにより、com.adobe.idp.Documentオブジェクトを作成します。 RecipientオブジェクトのsetX509Certメソッドを呼び出し、証明書が含まれるcom.adobe.idp.Documentオブジェクトを渡します(Recipientオブジェクトには、証明書のソースとして TrustStore 証明書のエイリアス、または LDAP URL を指定することもできます。)- コンストラクターを使用して、権限と証明書の情報を格納する
CertificateEncryptionIdentityオブジェクトを作成します。 CertificateEncryptionIdentityオブジェクトのsetPermsメソッドを呼び出して、権限情報を格納するjava.util.Listオブジェクトを渡します。CertificateEncryptionIdentityオブジェクトのsetRecipientメソッドを呼び出して、証明書情報を格納するRecipientオブジェクトを渡します。- コンストラクターを使用して証明書情報を格納する
java.util.Listを作成します。 java.util.Listオブジェクトの add メソッドを呼び出してCertificateEncryptionIdentityオブジェクトを渡します。(このjava.util.Listオブジェクトは、パラメーターとしてencryptPDFUsingCertificatesメソッドに渡されます)
- コンストラクターを使用して権限情報を格納する
-
暗号化の実行時オプションを設定する。
- コンストラクターを使用して
CertificateEncryptionOptionSpecオブジェクトを作成します。 CertificateEncryptionOptionSpecオブジェクトのsetOptionメソッドを呼び出し、暗号化するドキュメントリソースを指定するCertificateEncryptionOption列挙値を渡すことによって、暗号化する PDF ドキュメントリソースを指定します。例えば、メタデータと添付ファイルを含む PDF ドキュメント全体を暗号化する場合は、CertificateEncryptionOption.ALLと指定します。CertificateEncryptionOptionSpecオブジェクトのsetCompatメソッドを呼び出して、Acrobat の互換性レベルを指定する列挙値(CertificateEncryptionCompatibility)を渡して、Acrobat の互換性オプションを指定します。例えば、CertificateEncryptionCompatibility.ACRO_7と指定できます。
- コンストラクターを使用して
-
証明書で暗号化された PDF ドキュメントを作成する。
EncryptionServiceClientオブジェクトのencryptPDFUsingCertificatesメソッドを呼び出し、次の値を渡すことにより、PDF ドキュメントを証明書で暗号化します。- 暗号化する PDF ドキュメントが含まれる
com.adobe.idp.Documentオブジェクト - 証明書情報を格納する
java.util.Listオブジェクト - 暗号化の実行時オプションが含まれる
CertificateEncryptionOptionSpecオブジェクト
encryptPDFUsingCertificatesメソッドにより、証明書で暗号化された PDF ドキュメントが含まれるcom.adobe.idp.Documentオブジェクトが返されます。 - 暗号化する PDF ドキュメントが含まれる
-
暗号化された PDF ドキュメントを PDF ファイルとして保存する。
java.io.Fileオブジェクトを作成し、ファイルの拡張子が .pdf になっていることを確認します。com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、com.adobe.idp.Documentオブジェクトのコンテンツをファイルにコピーします。encryptPDFUsingCertificatesメソッドから返されたcom.adobe.idp.Documentオブジェクトを必ず使用してください。
関連トピック
Web サービス API を使用して 証明書により PDF ドキュメントを暗号化 encrypt-a-pdf-document-with-a-certificate-using-the-web-service-api
Encryption API(Web サービス)を使用して、PDF ドキュメントを証明書で暗号化します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1を使用するようにします。note note NOTE localhostを、AEM Forms をホストするサーバーの IP アドレスに置換します。 -
暗号化クライアント API オブジェクトを作成します。
-
デフォルトのコンストラクターを使用して、
EncryptionServiceClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用して、EncryptionServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/EncryptionService?WSDL)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
EncryptionServiceClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
EncryptionServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
EncryptionServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをBasicHttpBindingSecurity.Security.Modeフィールドに割り当てます。
-
-
暗号化する PDF ドキュメントを取得します。
- コンストラクターを呼び出すことにより、
BLOBオブジェクトを作成します。BLOBオブジェクトを使用して、証明書で暗号化された PDF ドキュメントを保存します。 - コンストラクターを呼び出して、暗号化する PDF ドキュメントファイルの場所とファイルを開くモードを表す文字列の値を渡すことにより、
System.IO.FileStreamオブジェクトを作成します。 System.IO.FileStreamオブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを決定できます。- バイト配列にストリームデータを入力するには、
System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡します。 MTOMプロパティにバイト配列の内容を割り当てることにより、BLOBオブジェクトに格納します。
- コンストラクターを呼び出すことにより、
-
証明書を参照します。
- コンストラクターを使用して
Recipientオブジェクトを作成します。このオブジェクトは、証明書情報を格納します。 - コンストラクターを使用して
BLOBオブジェクトを作成します。このBLOBオブジェクトには、PDF ドキュメントを暗号化する証明書が格納されます。 - コンストラクターを呼び出して、証明書ファイルの場所とファイルを開くモードを表す文字列の値を渡すことにより、
System.IO.FileStreamオブジェクトを作成します。 System.IO.FileStreamオブジェクトのコンテンツを格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡すことにより、バイト配列にストリームデータを入力します。- バイト配列の内容を
BLOBオブジェクトのMTOMデータメンバーに割り当てることにより、BLOBオブジェクトに格納します。 - 証明書を格納する
BLOBオブジェクトを、Recipientオブジェクトのx509Certデータメンバーに割り当てます。 - コンストラクターを使用して、証明書情報を格納する
CertificateEncryptionIdentityオブジェクトを作成します。 - 証明書を格納する
Recipientオブジェクトを、CertificateEncryptionIdentityオブジェクトの受信者データメンバーに割り当てます。 Object配列を作成して、CertificateEncryptionIdentityオブジェクトをObject配列の最初の要素に割り当てます。このObject配列が、encryptPDFUsingCertificatesメソッドへパラメーターとして渡されます。
- コンストラクターを使用して
-
暗号化の実行時オプションを設定します。
CertificateEncryptionOptionSpecオブジェクトのコンストラクタを使用して、このオブジェクトを作成します。CertificateEncryptionOption列挙値をCertificateEncryptionOptionSpecオブジェクトのoptionデータメンバーに割り当てることにより、暗号化する PDF ドキュメントリソースを指定します。メタデータと添付ファイルを含む、PDFドキュメント全体を暗号化するには、CertificateEncryptionOption.ALLをこのデータメンバーに割り当てます。CertificateEncryptionCompatibility列挙値をCertificateEncryptionOptionSpecオブジェクトのcompatデータメンバーに割り当てることにより、Acrobat の互換性オプションを指定します。例えば、CertificateEncryptionCompatibility.ACRO_7をこのデータメンバーに割り当てます。
-
証明書で暗号化された PDF ドキュメントを作成します。
EncryptionServiceServiceオブジェクトのencryptPDFUsingCertificatesメソッドを呼び出し、次の値を渡すことにより、PDF ドキュメントを証明書で暗号化します。- 暗号化する PDF ドキュメントを含む
BLOBオブジェクト。 - 証明書情報を格納する
Object配列。 - 暗号化の実行時オプションを含む
CertificateEncryptionOptionSpecオブジェクト。
encryptPDFUsingCertificatesメソッドにより、証明書で暗号化された PDF ドキュメントが含まれるBLOBオブジェクトが返されます。 - 暗号化する PDF ドキュメントを含む
-
暗号化された PDF ドキュメントを PDF ファイルとして保存します。
System.IO.FileStreamオブジェクトを作成するには、このオブジェクトのコンストラクターを呼び出し、保護された PDF ドキュメントのファイルの場所を表す文字列の値を渡します。encryptPDFUsingCertificatesメソッドが返したBLOBオブジェクトのデータコンテンツを格納するバイト配列を作成します。BLOBオブジェクトのbinaryDataデータメンバーの値を取得して、バイト配列を生成します。- コンストラクターを使用して
System.IO.BinaryWriterオブジェクトを渡すことによって、System.IO.FileStreamオブジェクトを作成します。 System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出して、バイト配列を渡すことによって、バイト配列の内容を PDF ファイルに書き込みます。
関連トピック:
証明書ベースの暗号化の削除 removing-certificate-based-encryption
証明書ベースの暗号化は PDF ドキュメントから削除することができ、これにより、Adobe Reader または Acrobat で PDF ドキュメントを開くことができます。証明書で暗号化されている PDF ドキュメントから暗号化を削除するには、公開鍵を参照する必要があります。PDF ドキュメントから暗号化を削除すると、そのドキュメントは保護されなくなります。
手順の概要 summary_of_steps-2
証明書ベースの暗号化を PDF ドキュメントから削除するには、次の手順を実行します。
- プロジェクトファイルを含めます。
- 暗号化サービスクライアントを作成します。
- 暗号化された PDF ドキュメントを取得します。
- 暗号化を削除します。
- PDF ドキュメントを PDF ファイルとして保存します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-encryption-client.jar
- adobe-utilities.jar(AEM Forms が JBoss Application Server にデプロイされている場合に必要)
- jbossall-client.jar(AEM Forms が JBoss Application Server にデプロイされている場合に必要)
暗号化サービスクライアントの作成
プログラムによって暗号化サービスの操作を実行するには、暗号化サービスクライアントを作成する必要があります。Java Encryption Service API を使用している場合は、EncrytionServiceClient オブジェクトを作成します。Web サービス Encryption Service API を使用している場合は、EncryptionServiceService オブジェクトを作成します。
暗号化された PDF ドキュメントを取得
証明書ベースの暗号化を削除するには、暗号化された PDF ドキュメントを取得します。暗号化されていない PDF ドキュメントから暗号化を削除しようとすると、例外がスローされます。同様に、パスワードで暗号化されたドキュメントから証明書ベースの暗号化を削除しようとすると、例外がスローされます。
暗号化を削除
暗号化された PDF ドキュメントから証明書ベースの暗号化を削除するには、暗号化された PDF ドキュメントと、PDF ドキュメントの暗号化に使用されたキーに対応する秘密鍵の両方が必要です。暗号化された PDF ドキュメントから証明書ベースの暗号化を削除する際に、秘密鍵のエイリアス値が指定されます。公開鍵についての詳細情報に関しては、証明書を使用した PDF ドキュメントの暗号化を参照してください。
PDF ドキュメントを保存
暗号化された PDF ドキュメントから証明書ベースの暗号化を削除した後、PDF ドキュメントを PDF ファイルとして保存できます。ユーザーは、Adobe Reader または Acrobat で PDF ドキュメントを開くことができます。
関連トピック
Java API を使用して証明書ベースの暗号化を削除 remove-certificate-based-encryption-using-the-java-api
暗号化 API(Java)を使用して、PDF ドキュメントから証明書ベースの暗号化を削除します。
-
プロジェクトファイルを含めます。
Java プロジェクトのクラスパスにクライアントの JAR ファイル(adobe-livecycle-client.jar など)を含めます。
-
暗号化サービスクライアントを作成します。
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactoryオブジェクトを渡すことにより、EncryptionServiceClientオブジェクトを作成します。
- 接続プロパティを含む
-
暗号化された PDF ドキュメントを取得します。
- 暗号化された PDF ドキュメントを表す
java.io.FileInputStreamオブジェクトを作成するには、このオブジェクトのコンストラクターを使用し、暗号化された PDF ドキュメントの場所を表す文字列値を渡します。 com.adobe.idp.Documentオブジェクトを作成するには、このオブジェクトのコンストラクターを使用し、java.io.FileInputStreamオブジェクトをを渡します。
- 暗号化された PDF ドキュメントを表す
-
暗号化を削除します。
EncryptionServiceClientオブジェクトのremovePDFCertificateSecurityメソッドを呼び出し、次の値を渡すことによって、証明書ベースの暗号化を PDF ドキュメントから削除します。- 暗号化された PDF ドキュメントを含む
com.adobe.idp.Documentオブジェクト。 - PDF ドキュメントの暗号化に使用されたキーに対応する秘密鍵のエイリアス名を指定する文字列値です。
removePDFCertificateSecurityメソッドは、保護されていない PDF ドキュメントを含むcom.adobe.idp.Documentオブジェクトを返します。 - 暗号化された PDF ドキュメントを含む
-
PDF ドキュメントを保存します。
java.io.Fileオブジェクトを作成し、ファイル拡張子が .pdf であることを確認します。com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、Documentオブジェクトのコンテンツをファイルにコピーします。removePDFCredentialSecurityメソッドから返されたcom.adobe.idp.Documentオブジェクトを必ず使用してください。
関連トピック
Web サービス API を使用して証明書ベースの暗号化を削除 remove-certificate-based-encryption-using-the-web-service-api
暗号化 API(web サービス)を使用して、証明書ベースの暗号化を削除します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1を使用するようにします。note note NOTE localhostを AEM Forms をホストしているサーバーの IP アドレスに置換します。 -
暗号化サービスクライアントを作成します。
-
EncryptionServiceClientオブジェクトを作成するには、このオブジェクトのデフォルトのコンストラクターを使用します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用して、EncryptionServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/EncryptionService?WSDL)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
EncryptionServiceClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
EncryptionServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
EncryptionServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
-
-
暗号化された PDF ドキュメントを取得します。
- コンストラクターを使用して
BLOBオブジェクトを作成します。BLOBオブジェクトは、暗号化された PDF ドキュメントを格納するために使用されます。 - コンストラクターを呼び出し、暗号化された PDF ドキュメントのファイルの場所とファイルを開くモードを表す文字列値を渡すことにより、
System.IO.FileStreamオブジェクトを作成します。 System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡すことにより、バイト配列にストリームデータを入力します。- バイト配列の内容を
BLOBオブジェクトのMTOMデータメンバーに割り当てることにより、BLOBオブジェクトにデータを入力します。
- コンストラクターを使用して
-
暗号化を削除します。
EncryptionServiceClientオブジェクトのremovePDFCertificateSecurityメソッドを呼び出して、次の値を渡します。- 暗号化された PDF ドキュメントを表すファイルストリームデータを含む
BLOBオブジェクト。 - PDFドキュメントの暗号化に使用された秘密鍵に対応する公開鍵のエイリアス名を指定する文字列値。
removePDFCredentialSecurityメソッドは、保護されていない PDF ドキュメントを含むBLOBオブジェクトを返します。 - 暗号化された PDF ドキュメントを表すファイルストリームデータを含む
-
PDF ドキュメントを保存します。
- コンストラクターを呼び出し、保護されていない PDF ドキュメントのファイルの場所を表す文字列値を渡すことにより、
System.IO.FileStreamオブジェクトを作成します。 removePDFPasswordSecurityメソッドによって返されたBLOBオブジェクトのコンテンツを格納するバイト配列を作成します。BLOBオブジェクトのMTOMデータメンバーの値を取得し、バイト配列を生成します。- コンストラクターを使用して
System.IO.BinaryWriterオブジェクトを渡すことによって、System.IO.FileStreamオブジェクトを作成します。 System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出して、バイト配列を渡すことによって、バイト配列の内容を PDF ファイルに書き込みます。
- コンストラクターを呼び出し、保護されていない PDF ドキュメントのファイルの場所を表す文字列値を渡すことにより、
関連トピック:
パスワード暗号化の削除 removing-password-encryption
パスワードベースの暗号化を PDF ドキュメントから削除できるため、ユーザーはパスワードを指定しなくても Adobe Reader または Acrobat で PDF ドキュメントを開くことができます。パスワードによる暗号化を PDF ドキュメントから削除すると、そのドキュメントは保護されなくなります。
手順の概要 summary_of_steps-3
PDF ドキュメントからパスワードベースの暗号化を削除するには、次の手順を実行します。
- プロジェクトファイルを含める
- 暗号化サービスクライアントを作成します。
- 暗号化された PDF ドキュメントを取得します。
- パスワードを削除します。
- PDF ドキュメントを PDF ファイルとして保存します。
プロジェクトファイルを含める
開発プロジェクトに必要なファイルを含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、必ずプロキシファイルを含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-encryption-client.jar
- adobe-utilities.jar(AEM Forms が JBoss にデプロイされている場合に必要)
- jbossall-client.jar(AEM Formsが JBoss にデプロイされている場合に必要)
暗号化サービスクライアントの作成
プログラムによって暗号化サービスの操作を実行するには、暗号化サービスクライアントを作成する必要があります。Java Encryption Service API を使用している場合は、EncrytionServiceClient オブジェクトを作成します。Web サービス Encryption Service API を使用している場合は、EncryptionServiceService オブジェクトを作成します。
暗号化された PDF ドキュメントを取得
パスワードベースの暗号化を削除するには、暗号化された PDF ドキュメントを取得します。暗号化されていない PDF ドキュメントから暗号化を削除しようとすると、例外がスローされます。
パスワードを削除
暗号化された PDF ドキュメントからパスワードベースの暗号化を削除するには、暗号化された PDF ドキュメントと、PDF ドキュメントから暗号化を削除するために使用されるマスターパスワード値の両方が必要です。パスワードで暗号化された PDF ドキュメントを開くために使用されるパスワードは、暗号化を削除するために使用することはできません。マスターパスワードは、PDF ドキュメントがパスワードで暗号化されるときに指定します。(パスワードを使用した PDF ドキュメントの暗号化を参照。)
PDF ドキュメントの保存
暗号化サービスが PDF ドキュメントからパスワードベースの暗号化を削除したら、PDF ドキュメントを PDF ファイルとして保存できます。ユーザーは、パスワードを指定せずに Adobe Reader または Acrobat で PDF ドキュメントを開くことができます。
関連項目
Java API を使用したパスワードベースの暗号化の削除 remove-password-based-encryption-using-the-java-api
暗号化 API(Java)を使用して、PDF ドキュメントからパスワードベースの暗号化を削除します。
-
プロジェクトファイルを含めます。
クライアント JAR ファイル(adobe-encryption-client.jar など)を Java プロジェクトのクラスパスに含めます。
-
暗号化サービスクライアントを作成します。
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactoryオブジェクトを渡すことにより、EncryptionServiceClientオブジェクトを作成します。
- 接続プロパティを含む
-
暗号化された PDF ドキュメントを取得します。
- コンストラクターを使用して、PDF ドキュメントの場所を指定する文字列値を渡すことにより、暗号化された PDF ドキュメントを表す
java.io.FileInputStreamオブジェクトを作成します。 - コンストラクターを使用して
java.io.FileInputStreamオブジェクトを渡すことにより、com.adobe.idp.Documentオブジェクトを作成します。
- コンストラクターを使用して、PDF ドキュメントの場所を指定する文字列値を渡すことにより、暗号化された PDF ドキュメントを表す
-
パスワードを削除します。
EncryptionServiceClientオブジェクトのremovePDFPasswordSecurityメソッドを呼び出して次の値を渡すことによって、PDF ドキュメントからパスワードベースの暗号化を削除します。- 暗号化された PDF ドキュメントを含む
com.adobe.idp.Documentオブジェクト。 - PDF ドキュメントから暗号化を削除するために使用するマスターパスワード値を指定する文字列の値。
removePDFPasswordSecurityメソッドは、保護されていない PDF ドキュメントを含むcom.adobe.idp.Documentオブジェクトを返します。 - 暗号化された PDF ドキュメントを含む
-
PDF ドキュメントを保存します。
java.io.Fileオブジェクトを作成し、ファイル拡張子が .pdf であることを確認します。com.adobe.idp.DocumentオブジェクトのcopyToFileメソッドを呼び出して、Documentオブジェクトのコンテンツをファイルにコピーします。removePDFPasswordSecurityメソッドから返されたDocumentオブジェクトを必ず使用してください。
関連項目
Web サービス API を使用したパスワードベースの暗号化の削除 remove-password-based-encryption-using-the-web-service-api
Encryption API(web サービス)を使用して、パスワードベースの暗号化を削除します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1を使用するようにします。note note NOTE localhostを AEM Forms をホストしているサーバーの IP アドレスに置換します。 -
暗号化サービスクライアントを作成します。
-
EncryptionServiceClientオブジェクトを作成するには、このオブジェクトのデフォルトのコンストラクターを使用します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用して、EncryptionServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/EncryptionService?WSDL)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
EncryptionServiceClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
EncryptionServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
EncryptionServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
-
-
暗号化された PDF ドキュメントを取得します。
- コンストラクターを使用して
BLOBオブジェクトを作成します。BLOBオブジェクトを使用して、パスワードで暗号化された PDF ドキュメントを格納します。 - コンストラクターを呼び出し、暗号化された PDF ドキュメントのファイルの場所とファイルを開くモードを表す文字列値を渡して、
System.IO.FileStreamオブジェクトを作成します。 System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡すことにより、バイト配列にストリームデータを入力します。- バイト配列のコンテンツを
BLOBオブジェクトのMTOMデータメンバーに割り当てることにより、BLOBオブジェクトを設定します。
- コンストラクターを使用して
-
パスワードを削除します。
EncryptionServiceServiceオブジェクトのremovePDFPasswordSecurityメソッドを呼び出して、以下の値を渡します。- 暗号化された PDF ドキュメントを表すファイルストリームデータを格納する
BLOBオブジェクト。 - PDF ドキュメントから暗号化を削除するために使用するパスワード値を指定する文字列値。この値は、パスワードで PDF ドキュメントを暗号化する際に指定します。
removePDFPasswordSecurityメソッドは、保護されていない PDF ドキュメントを含むBLOBオブジェクトを返します。 - 暗号化された PDF ドキュメントを表すファイルストリームデータを格納する
-
PDF ドキュメントを保存します。
- コンストラクターを呼び出し、保護されていない PDF ドキュメントのファイルの場所を表す文字列値を渡すことにより、
System.IO.FileStreamオブジェクトを作成します。 removePDFPasswordSecurityメソッドによって返されたBLOBオブジェクトのコンテンツを格納するバイト配列を作成します。BLOBオブジェクトのMTOMデータメンバーの値を取得し、バイト配列を生成します。- コンストラクターを使用して
System.IO.BinaryWriterオブジェクトを渡すことによって、System.IO.FileStreamオブジェクトを作成します。 System.IO.BinaryWriterオブジェクトのWriteメソッドを呼び出して、バイト配列を渡すことによって、バイト配列の内容を PDF ファイルに書き込みます。
- コンストラクターを呼び出し、保護されていない PDF ドキュメントのファイルの場所を表す文字列値を渡すことにより、
関連トピック
暗号化された PDF 文書のロック解除 unlocking-encrypted-pdf-documents
パスワードまたは証明書で暗号化された PDF ドキュメントは、別の AEM Forms で操作する前に、ロックを解除する必要があります。暗号化された PDF ドキュメントに対して操作を実行しようとすると、例外が発生します。暗号化された PDF ドキュメントのロックを解除すると、そのドキュメントに対する操作を実行できるようになります。Acrobat Reader DC 拡張機能サービスなど、別のサービスがそのような操作を行う可能性があります。
手順の概要 summary_of_steps-4
暗号化された PDF ドキュメントのロックを解除するには、次の手順を実施します。
- プロジェクトファイルを含めます。
- 暗号化サービスクライアントを作成します。
- 暗号化された PDF 文書を取得します。
- ドキュメントのロックを解除します。
- AEM Forms の操作を実行します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、必ずプロキシファイルを含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-encryption-client.jar
- adobe-utilities.jar(AEM Forms が JBoss Application Server にデプロイされている場合に必要)
- jbossall-client.jar(AEM Forms が JBoss Application Server にデプロイされている場合に必要)
暗号化サービスクライアントの作成
プログラムによって暗号化サービスの操作を実行するには、暗号化サービスクライアントを作成する必要があります。Java Encryption Service API を使用している場合は、EncrytionServiceClient オブジェクトを作成します。Web サービス Encryption Service API を使用している場合は、EncryptionServiceService オブジェクトを作成します。
暗号化された PDF ドキュメントを取得
ロックを解除するには、暗号化された PDF ドキュメントを取得します。暗号化されていない PDF ドキュメントのロックを解除しようとすると、例外が発生します。
ドキュメントのロックを解除
パスワードで暗号化された PDF ドキュメントのロックを解除するには、暗号化されたPDF ドキュメントと、パスワードで暗号化された PDF ドキュメントを開くために使用するパスワード値の両方が必要です。この値は、パスワードで PDF ドキュメントを暗号化する際に指定します。(パスワードを使用した PDF ドキュメントの暗号化を参照。)
証明書で暗号化された PDF ドキュメントのロックを解除するには、暗号化された PDF ドキュメントと、PDF ドキュメントの暗号化に使用された秘密鍵に対応する公開鍵のエイリアス値の両方が必要です。
AEM Forms 操作の実行
暗号化された PDF ドキュメントのロックが解除された後は、そのドキュメントに対して別のサービス操作(使用権限の適用など)を実行できます。この操作は、Acrobat Reader DC Extensions サービスに属しています。
関連項目
Java API での暗号化された PDF ドキュメントのロック解除
Java API での暗号化された PDF ドキュメントのロック解除 unlock-an-encrypted-pdf-document-using-the-java-api
Encryption API(Java)を使用して、暗号化された PDF ドキュメントのロックを解除します。
-
プロジェクトファイルを含めます。
Java プロジェクトのクラスパスにクライアントの JAR ファイル(adobe-livecycle-client.jar など)を含めます。
-
暗号化サービスクライアントを作成します。
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactoryオブジェクトを渡すことにより、EncryptionServiceClientオブジェクトを作成します。
- 接続プロパティを含む
-
暗号化された PDF ドキュメントを取得します。
- 暗号化された PDF ドキュメントを表す
java.io.FileInputStreamオブジェクトを作成するには、このオブジェクトのコンストラクターを使用し、暗号化された PDF ドキュメントの場所を表す文字列値を渡します。 - コンストラクターを使用して
java.io.FileInputStreamオブジェクトを渡すことによって、com.adobe.idp.Documentオブジェクトを作成します。
- 暗号化された PDF ドキュメントを表す
-
ドキュメントのロックを解除します。
EncryptionServiceClientオブジェクトのunlockPDFUsingPasswordまたはunlockPDFUsingCredentialメソッドを呼び出して、暗号化された PDFドキュメントをロック解除します。パスワードで暗号化された PDF ドキュメントのロックを解除するには、
unlockPDFUsingPasswordメソッドを呼び出して、次の値を渡します。- パスワードで暗号化された PDF ドキュメントを含む
com.adobe.idp.Documentオブジェクト。 - パスワードで暗号化された PDF ドキュメントを開くために使用されるパスワード値を指定する文字列値です。この値は、パスワードで PDF ドキュメントを暗号化する際に指定します。
証明書で暗号化されている PDF ドキュメントのロックを解除するには、
unlockPDFUsingCredentialメソッドを呼び出して、次の値を渡します。- 証明書で暗号化された PDF ドキュメントのコンテンツを表す
com.adobe.idp.Documentオブジェクト。 - PDF ドキュメントの暗号化に使用される秘密鍵に対応する公開鍵のエイリアス名を指定する文字列値。
unlockPDFUsingPasswordおよびunlockPDFUsingCredentialメソッドは両方とも、別の AEM Forms Java メソッドに渡して操作を実行するcom.adobe.idp.Documentオブジェクトを返します。 - パスワードで暗号化された PDF ドキュメントを含む
-
AEM Forms 操作を実行します。
ロックが解除された PDF ドキュメントに対して AEM Forms 操作を実行し、ビジネス要件を満たします。例えば、ロック解除された PDF ドキュメントに使用権限を適用する場合、
unlockPDFUsingPasswordまたはunlockPDFUsingCredentialメソッドによって返されたcom.adobe.idp.DocumentオブジェクトをReaderExtensionsServiceClientオブジェクトのapplyUsageRightsメソッドに渡します。
関連トピック
クイックスタート(SOAP モード):Java API を使用した暗号化された PDF ドキュメントのロック解除 (SOAP モード)
Web サービス API を使用して暗号化された PDF ドキュメントのロックを解除 unlock-an-encrypted-pdf-document-using-the-web-service-api
暗号化 API(web サービス)を使用して、暗号化された PDF ドキュメントのロックを解除します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1を使用するようにします。note note NOTE localhostを AEM Forms をホストしているサーバーの IP アドレスに置換します。 -
暗号化サービスクライアントを作成します。
-
EncryptionServiceClientオブジェクトを作成するには、このオブジェクトのデフォルトのコンストラクターを使用します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用して、EncryptionServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/EncryptionService?WSDL)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
EncryptionServiceClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
EncryptionServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
EncryptionServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
-
-
暗号化された PDF ドキュメントを取得します。
BLOBオブジェクトのコンストラクタを使用して、このオブジェクトを作成します。- コンストラクターを呼び出し、暗号化された PDF ドキュメントのファイルの場所と、そのファイルを開くモードを表す文字列値を渡すことによって、
System.IO.FileStreamオブジェクトを作成します。 System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡すことにより、バイト配列にストリームデータを入力します。- バイト配列のコンテンツを
BLOBオブジェクトのMTOMデータメンバーに割り当てて、BLOBオブジェクトを入力します。
-
ドキュメントのロックを解除します。
EncryptionServiceClientオブジェクトのunlockPDFUsingPasswordまたはunlockPDFUsingCredentialメソッドを呼び出して、暗号化された PDFドキュメントをロック解除します。パスワードで暗号化された PDF ドキュメントのロックを解除するには、
unlockPDFUsingPasswordメソッドを呼び出して、次の値を渡します。- パスワードで暗号化された PDF ドキュメントを含む
BLOBオブジェクト。 - パスワードで暗号化された PDF ドキュメントを開くために使用されるパスワード値を指定する文字列値です。この値は、パスワードで PDF ドキュメントを暗号化する際に指定します。
証明書で暗号化されている PDF ドキュメントのロックを解除するには、
unlockPDFUsingCredentialメソッドを呼び出して、次の値を渡します。- 証明書で暗号化された PDF ドキュメントを表す
BLOBオブジェクト。 - PDFドキュメントの暗号化に使用された秘密鍵に対応する公開鍵のエイリアス名を指定する文字列値。
unlockPDFUsingPasswordおよびunlockPDFUsingCredentialメソッドは両方とも、別の AEM Forms メソッドに渡して操作を実行するcom.adobe.idp.Documentオブジェクトを返します。 - パスワードで暗号化された PDF ドキュメントを含む
-
AEM Forms 操作を実行します。
ロックが解除された PDF ドキュメントに対して AEM Forms 操作を実行し、ビジネス要件を満たします。例えば、ロック解除された PDF ドキュメントに使用権限を適用する場合、
unlockPDFUsingPasswordまたはunlockPDFUsingCredentialメソッドによって返されたBLOBオブジェクトをReaderExtensionsServiceClientオブジェクトのapplyUsageRightsメソッドに渡します。
関連トピック
暗号化タイプの決定 determining-encryption-type
Java 暗号化サービス API または web サービス 暗号化サービス API を使用して、PDF ドキュメントを保護する暗号化の種類をプログラムで判断できます。PDF ドキュメントが暗号化されているかどうか、また暗号化されている場合は、暗号化タイプを動的に判断する必要が生じる場合があります。例えば、PDF ドキュメントをパスワードベースの暗号化で保護するか、Rights Management ポリシーで保護するかを指定できます。
PDF ドキュメントは、次のタイプの暗号化で保護できます。
- パスワードベースの暗号化
- 証明書ベースの暗号化
- Rights Management サービスによって作成されるポリシー
- それ以外のタイプの暗号化
手順の概要 summary_of_steps-5
PDF ドキュメントを保護する暗号化のタイプを判断するには、以下の手順に従います。
- プロジェクトファイルを含めます。
- 暗号化サービスクライアントを作成します。
- 暗号化された PDF ドキュメントを取得します。
- 暗号化の種類を決定します。
プロジェクトファイルを含める
必要なファイルを開発プロジェクトに含めます。Java を使用してクライアントアプリケーションを作成する場合は、必要な JAR ファイルを含めます。Web サービスを使用している場合は、プロキシファイルを必ず含めてください。
次の JAR ファイルをプロジェクトのクラスパスに追加する必要があります。
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-encryption-client.jar
- adobe-utilities.jar(AEM Forms が JBoss Application Server にデプロイされている場合に必要)
- jbossall-client.jar(AEM Forms が JBoss Application Server にデプロイされている場合に必要)
サービスクライアントの作成
プログラムによって暗号化サービスの操作を実行するには、暗号化サービスクライアントを作成する必要があります。Java Encryption Service API を使用している場合は、EncrytionServiceClient オブジェクトを作成します。Web サービス Encryption Service API を使用している場合は、EncryptionServiceService オブジェクトを作成します。
暗号化された PDF ドキュメントを取得
保護する暗号化のタイプを判断するには、PDF ドキュメントを入手します。
暗号化タイプの決定
PDF ドキュメントを保護している暗号化のタイプを判別できます。PDF ドキュメントが保護されていない場合、暗号化サービスは、PDF ドキュメントが保護されていないことを通知します。
関連項目
Java API を使用した暗号化タイプの決定 determine-the-encryption-type-using-the-java-api
Encryption API(Java)を使用して、PDF ドキュメントを保護する暗号化タイプを決定します。
-
プロジェクトファイルを含めます。
Java プロジェクトのクラスパスにクライアントの JAR ファイル(adobe-livecycle-client.jar など)を含めます。
-
サービスクライアントを作成します。
- 接続プロパティを含む
ServiceClientFactoryオブジェクトを作成します。 - コンストラクターを使用して
ServiceClientFactoryオブジェクトを渡すことにより、EncryptionServiceClientオブジェクトを作成します。
- 接続プロパティを含む
-
暗号化された PDF ドキュメントを取得します。
- コンストラクターを使用して、PDF ドキュメントの場所を指定する文字列の値を渡すことにより、PDF ドキュメントを表す
java.io.FileInputStreamオブジェクトを作成します。 - コンストラクターを使用して
java.io.FileInputStreamオブジェクトを渡すことにより、com.adobe.idp.Documentオブジェクトを作成します。
- コンストラクターを使用して、PDF ドキュメントの場所を指定する文字列の値を渡すことにより、PDF ドキュメントを表す
-
暗号化タイプを決定します。
EncryptionServiceClientオブジェクトのgetPDFEncryptionメソッドを呼び出して、PDF ドキュメントを含むcom.adobe.idp.Documentオブジェクトを渡すことにより、暗号化タイプを決定します。このメソッドは、EncryptionTypeResultオブジェクトを返します。EncryptionTypeResultオブジェクトのgetEncryptionTypeメソッドを呼び出します。このメソッドは、暗号化タイプを指定するEncryptionType列挙値を返します。例えば、パスワードベースの暗号化で PDF ドキュメントが保護されている場合、このメソッドはEncryptionType.PASSWORDを返します。
関連項目
クイックスタート(SOAP モード):Java API を使用した暗号化タイプの決定
Web サービス API を使用した暗号化タイプの決定 determine-the-encryption-type-using-the-web-service-api
Encryption API(web サービス)を使用して、PDF ドキュメントを保護する暗号化の種類を決定します。
-
プロジェクトファイルを含めます。
MTOM を使用する Microsoft .NET プロジェクトを作成します。WSDL 定義
http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1を使用するようにします。note note NOTE localhostを AEM Forms をホスティングしているサーバーの IP アドレスに置き換えます。 -
サービスクライアントを作成します。
-
デフォルトのコンストラクターを使用して
EncryptionServiceClientオブジェクトを作成します。 -
System.ServiceModel.EndpointAddressコンストラクタを使用して、EncryptionServiceClient.Endpoint.Addressオブジェクトを作成します。WSDL を指定する文字列値を AEM Forms サービスに渡します(例:http://localhost:8080/soap/services/EncryptionService?WSDL)。lc_version属性を使用する必要はありません。この属性は、サービス参照を作成する際に使用されます。 -
EncryptionServiceClient.Endpoint.Bindingフィールドの値を取得して、System.ServiceModel.BasicHttpBindingオブジェクトを作成します。戻り値をBasicHttpBindingにキャストします。 -
System.ServiceModel.BasicHttpBindingオブジェクトのMessageEncodingフィールドをWSMessageEncoding.Mtomに設定します。この値により、MTOM が確実に使用されます。 -
次のタスクを実行して、HTTP 基本認証を有効にします。
EncryptionServiceClient.ClientCredentials.UserName.UserNameフィールドに AEM Forms ユーザー名を割り当てます。- 対応するパスワード値を
EncryptionServiceClient.ClientCredentials.UserName.Passwordフィールドに割り当てます。 - 定数値
HttpClientCredentialType.BasicをBasicHttpBindingSecurity.Transport.ClientCredentialTypeフィールドに割り当てます。 - 定数値
BasicHttpSecurityMode.TransportCredentialOnlyをフィールドBasicHttpBindingSecurity.Security.Modeに割り当てます。
-
-
暗号化された PDF ドキュメントを取得します。
- コンストラクターを使用して
BLOBオブジェクトを作成します。 - コンストラクターを呼び出し、暗号化された PDF ドキュメントのファイルの場所と、そのファイルを開くモードを表す文字列値を渡すことによって、
System.IO.FileStreamオブジェクトを作成します。 System.IO.FileStreamオブジェクトの内容を格納するバイト配列を作成します。System.IO.FileStreamオブジェクトのLengthプロパティを取得することで、バイト配列のサイズを決定できます。System.IO.FileStreamオブジェクトのReadメソッドを呼び出し、バイト配列、開始位置、読み取るストリーム長を渡すことにより、バイト配列にストリームデータを入力します。- バイト配列の内容を
BLOBオブジェクトのMTOMデータメンバーに割り当てることにより、BLOBオブジェクトに入力します。
- コンストラクターを使用して
-
暗号化タイプを決定します。
EncryptionServiceClientオブジェクトのgetPDFEncryptionメソッドを呼び出して、PDF ドキュメントが格納されているBLOBオブジェクトを渡します。このメソッドは、EncryptionTypeResultオブジェクトを返します。EncryptionTypeResultオブジェクトのencryptionTypeデータメソッドの値を取得します。例えば、PDF ドキュメントがパスワードベースの暗号化で保護されている場合、このデータメンバーの値はEncryptionType.PASSWORDです。
関連トピック