本文档中的示例和示例仅适用于AEM Forms on JEE环境。
关于加密服务
加密服务允许您加密和解密文档。 文档加密后,其内容变得不可读。 授权用户可以解密文档以获得对内容的访问权限。 如果使用密码对PDF文档进行加密,则用户必须先指定打开密码,然后才能在Adobe Reader或Adobe Acrobat中查看文档。 同样,如果使用证书加密PDF文档,则用户必须使用与用于加密PDF文档的证书(私钥)相对应的公钥对PDF文档进行解密。
您可以使用加密服务完成这些任务:
有关加密服务的详细信息,请参见 AEM Forms的服务参考.
使用密码加密PDF文档时,用户必须指定密码才能在Adobe Reader或Acrobat中打开PDF文档。 此外,在对文档执行其他AEM Forms操作(如对PDF文档进行数字签名)之前,必须解锁经过密码加密的PDF文档。
如果您将加密的PDF文档上传到AEM Forms存储库,它将无法解密PDF文档并提取XDP内容。 建议您在将文档上传到AEM Forms存储库之前不要对其进行加密。 (请参阅 写入资源.)
有关加密服务的详细信息,请参见 AEM Forms的服务参考.
要使用口令加密PDF文档,请执行以下步骤:
包括项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
必须将以下JAR文件添加到项目的类路径中:
创建加密客户端API对象
要以编程方式执行加密服务操作,您必须创建加密服务客户端。
获取要加密的PDF文档
您必须获取未加密的PDF文档,才能使用密码对文档进行加密。 如果尝试保护已加密的PDF文档,则会导致异常。
设置加密运行时选项
要使用口令加密PDF文档,可以指定四个值,包括两个口令值。 第一个密码值用于加密PDF文档,并且必须在打开PDF文档时指定。 第二个口令值(名为主控口令值)用于从PDF文档中移除加密。 密码值区分大小写,且这两个密码值不能相同。
您必须指定要加密的PDF文档资源。 您可以加密整个PDF文档,除文档元数据以外的所有内容,或者仅加密文档的附件。 如果只加密文档的附件,则当用户尝试访问文件附件时,系统会提示用户输入密码。
加密PDF文档时,您可以指定与受保护文档关联的权限。 通过指定权限,您可以控制允许打开口令加密的PDF文档的用户执行的操作。 例如,要成功提取表单数据,您必须设置以下权限:
权限指定为 PasswordEncryptionPermission
枚举值。
添加密码
检索不安全的PDF文档并设置加密运行时值后,可以向PDF文档添加密码。
将加密的PDF文档另存为PDF文件
您可以将密码加密的PDF文档另存为PDF文件。
另请参阅
使用加密API (Java)使用密码加密PDF文档:
包括项目文件。
在Java项目的类路径中包含客户端JAR文件,例如adobe-encryption-client.jar。
创建加密客户端API。
ServiceClientFactory
包含连接属性的对象。EncryptionServiceClient
对象,使用它的构造函数传递 ServiceClientFactory
对象。获取要加密的PDF文档。
java.io.FileInputStream
表示要加密的PDF文档的对象,加密方法是使用其构造函数并传递一个指定PDF文档位置的字符串值。com.adobe.idp.Document
对象,使用它的构造函数传递 java.io.FileInputStream
对象。设置加密运行时选项。
PasswordEncryptionOptionSpec
对象。PasswordEncryptionOptionSpec
对象的 setEncryptOption
方法和传递 PasswordEncryptionOption
指定要加密的文档资源的枚举值。 例如,要加密整个PDF文档(包括其元数据和附件),请指定 PasswordEncryptionOption.ALL
.java.util.List
通过使用来存储加密权限的对象 ArrayList
构造函数。java.util.List
对象 add
方法,并传递与要设置的权限对应的枚举值。 例如,要设置允许用户复制位于PDF文档中的数据的权限,请指定 PasswordEncryptionPermission.PASSWORD_EDIT_COPY
. (对每个要设置的权限重复此步骤)。PasswordEncryptionOptionSpec
对象的 setCompatability
方法,并传递一个指定Acrobat兼容性级别的枚举值。 例如,您可以指定 PasswordEncryptionCompatability.ACRO_7
.PasswordEncryptionOptionSpec
对象的 setDocumentOpenPassword
方法,并传递表示打开密码的字符串值。PasswordEncryptionOptionSpec
对象的 setPermissionPassword
方法,并传递表示主控密码的字符串值。添加密码。
PDF通过调用 EncryptionServiceClient
对象的 encryptPDFUsingPassword
方法,并传递以下值:
com.adobe.idp.Document
包含要用密码加密的PDF文档的对象。PasswordEncryptionOptionSpec
包含加密运行时选项的对象。此 encryptPDFUsingPassword
方法返回 com.adobe.idp.Document
包含密码加密PDF文档的对象。
将加密的PDF文档另存为PDF文件。
java.io.File
对象并确保文件扩展名为.pdf。com.adobe.idp.Document
对象的 copyToFile
用于复制目录内容的方法 com.adobe.idp.Document
对象到文件。 确保您使用 com.adobe.idp.Document
返回的对象 encryptPDFUsingPassword
方法。另请参阅
快速入门(SOAP模式):使用Java API加密PDF文档
使用加密API(Web服务)对PDF文档进行密码加密:
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义: http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
.
Replace localhost
包含托管AEM Forms的服务器的IP地址。
创建加密客户端API对象。
创建 EncryptionServiceClient
对象。
创建 EncryptionServiceClient.Endpoint.Address
对象 System.ServiceModel.EndpointAddress
构造函数。 将指定WSDL的字符串值传递给AEM Forms服务(例如, http://localhost:8080/soap/services/EncryptionService?WSDL
.) 您无需使用 lc_version
属性。 创建服务引用时使用此属性。)
创建 System.ServiceModel.BasicHttpBinding
对象,方法是获取 EncryptionServiceClient.Endpoint.Binding
字段。 将返回值强制转换为 BasicHttpBinding
.
设置 System.ServiceModel.BasicHttpBinding
对象的 MessageEncoding
字段至 WSMessageEncoding.Mtom
. 此值可确保使用MTOM。
通过执行以下任务启用基本HTTP身份验证:
EncryptionServiceClient.ClientCredentials.UserName.UserName
.EncryptionServiceClient.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
对象,方法是将 BLOB
对象的 MTOM
数据成员。设置加密运行时选项。
PasswordEncryptionOptionSpec
对象。PasswordEncryptionOption
的枚举值 PasswordEncryptionOptionSpec
对象的 encryptOption
数据成员。 要加密整个PDF(包括其元数据和附件),请分配 PasswordEncryptionOption.ALL
至此数据成员。PasswordEncryptionCompatability
的枚举值 PasswordEncryptionOptionSpec
对象的 compatability
数据成员。 例如,分配 PasswordEncryptionCompatability.ACRO_7
至此数据成员。PasswordEncryptionOptionSpec
对象的 documentOpenPassword
数据成员。PasswordEncryptionOptionSpec
对象的 permissionPassword
数据成员。添加密码。
PDF通过调用 EncryptionServiceClient
对象的 encryptPDFUsingPassword
方法,并传递以下值:
BLOB
包含要用密码加密的PDF文档的对象。PasswordEncryptionOptionSpec
包含加密运行时选项的对象。此 encryptPDFUsingPassword
方法返回 BLOB
包含密码加密PDF文档的对象。
将加密的PDF文档另存为PDF文件。
System.IO.FileStream
对象,方法是调用其构造函数并传递表示受保护PDF文档的文件位置的字符串值。BLOB
返回的对象 encryptPDFUsingPassword
方法。 通过获取的值填充字节数组 BLOB
对象的 MTOM
数据成员。System.IO.BinaryWriter
对象,方法是调用其构造函数 System.IO.FileStream
对象。System.IO.BinaryWriter
对象的 Write
方法和传递字节数组。另请参阅
基于证书的加密允许您通过公钥技术为特定收件人加密文档。 可以为各种收件人授予文档的不同权限。 公钥技术使加密的许多方面成为可能。 算法用于生成两个大数,称为 键,具有以下属性:
其中一个密钥充当用户的私钥。 重要的是,只有用户才有权访问此密钥。 另一个密钥是用户的公钥,可以与其他人共享。
公钥证书包含用户的公钥和标识信息。 X.509格式用于存储证书。 证书通常由证书颁发机构(CA)颁发并进行数字签名,CA是一个公认的实体,提供对证书有效性的信任度量。 证书有一个过期日期,过期后不再有效。 此外,证书吊销列表(CRL)还提供有关在证书过期日期之前吊销的证书的信息。 证书颁发机构定期发布CRL。 证书吊销状态也可以通过网络上的联机证书状态协议(OCSP)进行检索。
如果您将加密的PDF文档上传到AEM Forms存储库,它将无法解密PDF文档并提取XDP内容。 建议您在将文档上传到AEM Forms存储库之前不要对其进行加密。 (请参阅 写入资源.)
使用证书加密PDF文档之前,必须确保将证书添加到AEM Forms。 使用管理控制台或以编程方式使用信任管理器API添加证书。 (请参阅 使用信任管理器API导入凭据.)
有关加密服务的详细信息,请参见 AEM Forms的服务参考.
要使用证书加密PDF文档,请执行以下步骤:
包括项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
必须将以下JAR文件添加到项目的类路径中:
创建加密客户端API对象
要以编程方式执行加密服务操作,您必须创建加密服务客户端。 如果您使用的是Java加密服务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文件。
另请参阅
使用加密API (Java)使用证书加密PDF文档:
包括项目文件。
在Java项目的类路径中包含客户端JAR文件,例如adobe-encryption-client.jar。
创建加密客户端API对象。
ServiceClientFactory
包含连接属性的对象。EncryptionServiceClient
对象,使用它的构造函数传递 ServiceClientFactory
对象。获取要加密的PDF文档。
java.io.FileInputStream
表示要加密的PDF文档的对象,加密方法是使用其构造函数并传递一个指定PDF文档位置的字符串值。com.adobe.idp.Document
对象,使用它的构造函数传递 java.io.FileInputStream
对象。引用证书。
java.util.List
使用其构造函数存储权限信息的对象。java.util.List
对象的 add
方法和传递 CertificateEncryptionPermissions
枚举值,表示向打开安全PDF文档的用户授予的权限。 例如,要指定所有权限,请传递 CertificateEncryptionPermissions.PKI_ALL_PERM
.Recipient
对象。java.io.FileInputStream
对象,表示用于加密PDF文档的证书,该证书使用其构造函数并传递指定证书位置的字符串值。com.adobe.idp.Document
对象,使用它的构造函数传递 java.io.FileInputStream
表示证书的对象。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文档(包括其元数据和附件),请指定 CertificateEncryptionOption.ALL
.CertificateEncryptionOptionSpec
对象的 setCompat
方法和传递 CertificateEncryptionCompatibility
指定Acrobat兼容性级别的枚举值。 例如,您可以指定 CertificateEncryptionCompatibility.ACRO_7
.创建证书加密的PDF文档。
PDF通过调用 EncryptionServiceClient
对象的 encryptPDFUsingCertificates
方法,并传递以下值:
com.adobe.idp.Document
包含要加密的PDF文档的对象。java.util.List
存储证书信息的对象。CertificateEncryptionOptionSpec
包含加密运行时选项的对象。此 encryptPDFUsingCertificates
方法返回 com.adobe.idp.Document
包含证书加密PDF文档的对象。
将加密的PDF文档另存为PDF文件。
java.io.File
对象并确保文件扩展名为.pdf。com.adobe.idp.Document
对象的 copyToFile
用于复制目录内容的方法 com.adobe.idp.Document
对象到文件。 确保您使用 com.adobe.idp.Document
返回的对象 encryptPDFUsingCertificates
方法。另请参阅
快速入门(SOAP模式):使用Java API使用证书加密PDF文档
使用加密API(Web服务)加密带证书的PDF文档:
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义: http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
.
Replace localhost
包含托管AEM Forms的服务器的IP地址。
创建加密客户端API对象。
创建 EncryptionServiceClient
对象。
创建 EncryptionServiceClient.Endpoint.Address
对象 System.ServiceModel.EndpointAddress
构造函数。 将指定WSDL的字符串值传递给AEM Forms服务(例如, http://localhost:8080/soap/services/EncryptionService?WSDL
.) 您无需使用 lc_version
属性。 创建服务引用时使用此属性。)
创建 System.ServiceModel.BasicHttpBinding
对象,方法是获取 EncryptionServiceClient.Endpoint.Binding
字段。 将返回值强制转换为 BasicHttpBinding
.
设置 System.ServiceModel.BasicHttpBinding
对象的 MessageEncoding
字段至 WSMessageEncoding.Mtom
. 此值可确保使用MTOM。
通过执行以下任务启用基本HTTP身份验证:
EncryptionServiceClient.ClientCredentials.UserName.UserName
.EncryptionServiceClient.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
属性与字节数组的内容。引用证书。
Recipient
对象。 此对象将存储证书信息。BLOB
对象。 此 BLOB
对象将存储加密PDF文档的证书。System.IO.FileStream
对象,方法是调用其构造函数并传递一个字符串值,该值表示证书的文件位置和打开文件的模式。System.IO.FileStream
对象。 您可以通过获取 System.IO.FileStream
对象的 Length
属性。System.IO.FileStream
对象的 Read
方法,并传递字节数组、起始位置和要读取的流长度。BLOB
对象,方法是将 BLOB
对象的 MTOM
数据成员。BLOB
将证书存储到的对象 Recipient
对象的 x509Cert
数据成员。CertificateEncryptionIdentity
使用其构造函数存储证书信息的对象。Recipient
将证书存储到的对象 CertificateEncryptionIdentity
对象的收件人数据成员。Object
数组,并分配 CertificateEncryptionIdentity
对象到的第一个元素 Object
数组。 此 Object
数组作为参数传递到 encryptPDFUsingCertificates
方法。设置加密运行时选项。
CertificateEncryptionOptionSpec
对象。CertificateEncryptionOption
的枚举值 CertificateEncryptionOptionSpec
对象的 option
数据成员。 要加密整个PDF文档(包括其元数据和附件),请分配 CertificateEncryptionOption.ALL
至此数据成员。CertificateEncryptionCompatibility
的枚举值 CertificateEncryptionOptionSpec
对象的 compat
数据成员。 例如,分配 CertificateEncryptionCompatibility.ACRO_7
至此数据成员。创建证书加密的PDF文档。
PDF通过调用 EncryptionServiceService
对象的 encryptPDFUsingCertificates
方法,并传递以下值:
BLOB
包含要加密的PDF文档的对象。Object
存储证书信息的数组。CertificateEncryptionOptionSpec
包含加密运行时选项的对象。此 encryptPDFUsingCertificates
方法返回 BLOB
包含证书加密PDF文档的对象。
将加密的PDF文档另存为PDF文件。
System.IO.FileStream
对象,方法是调用其构造函数并传递表示受保护PDF文档的文件位置的字符串值。BLOB
返回的对象 encryptPDFUsingCertificates
方法。 通过获取的值填充字节数组 BLOB
对象的 binaryData
数据成员。System.IO.BinaryWriter
对象,方法是调用其构造函数 System.IO.FileStream
对象。System.IO.BinaryWriter
对象的 Write
方法和传递字节数组。另请参阅
可以从PDF文档中删除基于证书的加密,以便用户可以在Adobe Reader或Acrobat中打开PDF文档。 要从使用证书加密的PDF文档中删除加密,必须引用公钥。 从PDF文档中删除加密后,它不再安全。
有关加密服务的详细信息,请参见 AEM Forms的服务参考.
要从PDF文档中删除基于证书的加密,请执行以下步骤:
包括项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
必须将以下JAR文件添加到项目的类路径中:
创建加密服务客户端
要以编程方式执行加密服务操作,您必须创建加密服务客户端。 如果您使用的是Java加密服务API,请创建 EncrytionServiceClient
对象。 如果您使用的是Web服务加密服务API,请创建 EncryptionServiceService
对象。
获取加密的PDF文档
您必须获取加密的PDF文档,才能删除基于证书的加密。 如果尝试从未加密的PDF文档中删除加密,则会引发异常。 同样,如果尝试从密码加密的文档中删除基于证书的加密,则会引发异常。
删除加密
要从已加密的PDF文档中删除基于证书的加密,您需要已加密的PDF文档以及与用于加密PDF文档的密钥对应的私钥。 从加密的PDF文档中删除基于证书的加密时,会指定私钥的别名值。 有关公钥的信息,请参见 使用证书加密PDF文档.
私钥存储在AEM Forms信任存储区中。 将证书放在其中时,会指定别名值。
保存PDF文档
从加密的PDF文档中删除基于证书的加密后,您可以将PDF文档另存为PDF文件。 用户可以在Adobe Reader或Acrobat中打开PDF文档。
另请参阅
使用加密API (Java)从PDF文档中删除基于证书的加密:
包括项目文件。
在Java项目的类路径中包含客户端JAR文件,例如adobe-encryption-client.jar。
创建加密服务客户端。
ServiceClientFactory
包含连接属性的对象。EncryptionServiceClient
对象,使用它的构造函数传递 ServiceClientFactory
对象。获取加密的PDF文档。
java.io.FileInputStream
对象,通过使用加密的PDF文档的构造函数并传递指定加密PDF文档位置的字符串值来表示该加密文档。com.adobe.idp.Document
对象,使用它的构造函数传递 java.io.FileInputStream
对象。删除加密。
通过调用,从PDF文档中删除基于证书的加密 EncryptionServiceClient
对象的 removePDFCertificateSecurity
方法,并传递以下值:
com.adobe.idp.Document
包含加密PDF文档的对象。此 removePDFCertificateSecurity
方法返回 com.adobe.idp.Document
包含不安全PDF文档的对象。
保存PDF文档。
java.io.File
对象并确保文件扩展名为.pdf。com.adobe.idp.Document
对象的 copyToFile
用于复制目录内容的方法 Document
对象到文件。 确保您使用 com.adobe.idp.Document
返回的对象 removePDFCredentialSecurity
方法。另请参阅
快速入门(SOAP模式):使用Java API删除基于证书的加密
使用加密API(Web服务)删除基于证书的加密:
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义: http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
.
Replace localhost
包含托管AEM Forms的服务器的IP地址。
创建加密服务客户端。
创建 EncryptionServiceClient
对象。
创建 EncryptionServiceClient.Endpoint.Address
对象 System.ServiceModel.EndpointAddress
构造函数。 将指定WSDL的字符串值传递给AEM Forms服务(例如, http://localhost:8080/soap/services/EncryptionService?WSDL
.) 您无需使用 lc_version
属性。 创建服务引用时使用此属性。)
创建 System.ServiceModel.BasicHttpBinding
对象,方法是获取 EncryptionServiceClient.Endpoint.Binding
字段。 将返回值强制转换为 BasicHttpBinding
.
设置 System.ServiceModel.BasicHttpBinding
对象的 MessageEncoding
字段至 WSMessageEncoding.Mtom
. 此值可确保使用MTOM。
通过执行以下任务启用基本HTTP身份验证:
EncryptionServiceClient.ClientCredentials.UserName.UserName
.EncryptionServiceClient.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
对象,方法是将 BLOB
对象的 MTOM
数据成员。删除加密。
调用 EncryptionServiceClient
对象的 removePDFCertificateSecurity
方法,并传递以下值:
BLOB
包含表示加密PDF文档的文件流数据的对象。此 removePDFCredentialSecurity
方法返回 BLOB
包含不安全PDF文档的对象。
保存PDF文档。
System.IO.FileStream
对象,方法是调用其构造函数并传递一个字符串值,该值表示不安全PDF文档的文件位置。BLOB
返回的对象 removePDFPasswordSecurity
方法。 通过获取的值填充字节数组 BLOB
对象的 MTOM
数据成员。System.IO.BinaryWriter
对象,方法是调用其构造函数 System.IO.FileStream
对象。System.IO.BinaryWriter
对象的 Write
方法和传递字节数组。另请参阅
可以从PDF文档中删除基于密码的加密,以便用户无需指定密码即可在Adobe Reader或Acrobat中打开PDF文档。 从PDF文档中删除基于密码的加密后,文档不再安全。
有关加密服务的详细信息,请参见 AEM Forms的服务参考.
要从PDF文档中删除基于密码的加密,请执行以下步骤:
包括项目文件
将必要的文件包含到开发项目中。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
必须将以下JAR文件添加到项目的类路径中:
创建加密服务客户端
要以编程方式执行加密服务操作,您必须创建加密服务客户端。 如果您使用的是Java加密服务API,请创建 EncrytionServiceClient
对象。 如果您使用的是Web服务加密服务API,请创建 EncryptionServiceService
对象。
获取加密的PDF文档
必须获取加密的PDF文档,才能删除基于密码的加密。 如果尝试从未加密的PDF文档中删除加密,则会引发异常。
删除密码
要从已加密的PDF文档中删除基于密码的加密,您需要一个已加密的PDF文档和一个用于从PDF文档中删除加密的主控密码值。 不能使用用于打开密码加密的PDF文档的密码来删除加密。 使用密码对PDF文档进行加密时,会指定主控的密码。 (请参阅 使用密码加密PDF文档.)
保存PDF文档
在Encryption服务从PDF文档中删除基于密码的加密后,您可以将PDF文档另存为PDF文件。 用户无需指定密码,即可在Adobe Reader或Acrobat中打开PDF文档。
另请参阅
使用加密API (Java)从PDF文档中删除基于密码的加密:
包括项目文件。
在Java项目的类路径中包含客户端JAR文件,例如adobe-encryption-client.jar。
创建加密服务客户端。
ServiceClientFactory
包含连接属性的对象。EncryptionServiceClient
对象,使用它的构造函数传递 ServiceClientFactory
对象。获取加密的PDF文档。
java.io.FileInputStream
对象,通过使用加密的PDF文档的构造函数并传递指定PDF文档位置的字符串值来表示该文档。com.adobe.idp.Document
对象,使用它的构造函数传递 java.io.FileInputStream
对象。删除密码。
通过调用,从PDF文档中删除基于密码的加密 EncryptionServiceClient
对象的 removePDFPasswordSecurity
方法,并传递以下值:
com.adobe.idp.Document
包含加密PDF文档的对象。此 removePDFPasswordSecurity
方法返回 com.adobe.idp.Document
包含不安全PDF文档的对象。
保存PDF文档。
java.io.File
对象并确保文件扩展名为.pdf。com.adobe.idp.Document
对象的 copyToFile
用于复制目录内容的方法 Document
对象到文件。 确保您使用 Document
返回的对象 removePDFPasswordSecurity
方法。另请参阅
快速入门(SOAP模式):使用Java API删除基于密码的加密
使用加密API(Web服务)删除基于密码的加密:
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义: http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
.
Replace localhost
包含托管AEM Forms的服务器的IP地址。
创建加密服务客户端。
创建 EncryptionServiceClient
对象。
创建 EncryptionServiceClient.Endpoint.Address
对象 System.ServiceModel.EndpointAddress
构造函数。 将指定WSDL的字符串值传递给AEM Forms服务(例如, http://localhost:8080/soap/services/EncryptionService?WSDL
.) 您无需使用 lc_version
属性。 创建服务引用时使用此属性。)
创建 System.ServiceModel.BasicHttpBinding
对象,方法是获取 EncryptionServiceClient.Endpoint.Binding
字段。 将返回值强制转换为 BasicHttpBinding
.
设置 System.ServiceModel.BasicHttpBinding
对象的 MessageEncoding
字段至 WSMessageEncoding.Mtom
. 此值可确保使用MTOM。
通过执行以下任务启用基本HTTP身份验证:
EncryptionServiceClient.ClientCredentials.UserName.UserName
.EncryptionServiceClient.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
对象,方法是将 BLOB
对象的 MTOM
数据成员。删除密码。
调用 EncryptionServiceService
对象的 removePDFPasswordSecurity
方法,并传递以下值:
BLOB
包含表示加密PDF文档的文件流数据的对象。此 removePDFPasswordSecurity
方法返回 BLOB
包含不安全PDF文档的对象。
保存PDF文档。
System.IO.FileStream
对象,方法是调用其构造函数并传递一个字符串值,该值表示不安全PDF文档的文件位置。BLOB
返回的对象 removePDFPasswordSecurity
方法。 通过获取的值填充字节数组 BLOB
对象的 MTOM
数据成员。System.IO.BinaryWriter
对象,方法是调用其构造函数 System.IO.FileStream
对象。System.IO.BinaryWriter
对象的 Write
方法和传递字节数组。另请参阅
必须先解锁密码加密或证书加密的PDF文档,然后才能对其执行其他AEM Forms操作。 如果尝试对加密的PDF文档执行操作,将生成异常。 解锁已加密的PDF文档后,可以对其执行一个或多个操作。 这些操作可以属于其他服务,例如Acrobat Reader DC扩展服务。
有关加密服务的详细信息,请参见 AEM Forms的服务参考.
要解锁加密的PDF文档,请执行以下步骤:
包括项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
必须将以下JAR文件添加到项目的类路径中:
创建加密服务客户端
要以编程方式执行加密服务操作,您必须创建加密服务客户端。 如果您使用的是Java加密服务API,请创建 EncrytionServiceClient
对象。 如果您使用的是Web服务加密服务API,请创建 EncryptionServiceService
对象。
获取加密的PDF文档
您必须获取加密的PDF文档才能将其解锁。 如果尝试解锁未加密的PDF文档,则会引发异常。
解锁文档
要解除对密码加密的PDF文档的锁定,您需要加密的PDF文档和用于打开密码加密的PDF文档的密码值。 使用密码加密PDF文档时指定此值。 (请参阅 使用密码加密PDF文档.)
要解锁证书加密的PDF文档,您需要加密的PDF文档以及与用于加密PDF文档的私钥对应的公钥的别名值。
执行AEM Forms操作
解锁加密的PDF文档后,您可以对其执行其他服务操作,例如对其应用使用权限。 此操作属于Acrobat Reader DC扩展服务。
另请参阅
使用加密API (Java)解锁加密的PDF文档:
包括项目文件。
在Java项目的类路径中包含客户端JAR文件,例如adobe-encryption-client.jar。
创建加密服务客户端。
ServiceClientFactory
包含连接属性的对象。EncryptionServiceClient
对象,使用它的构造函数传递 ServiceClientFactory
对象。获取加密的PDF文档。
java.io.FileInputStream
对象,通过使用加密的PDF文档的构造函数并传递指定加密PDF文档位置的字符串值来表示该加密文档。com.adobe.idp.Document
对象,使用它的构造函数传递 java.io.FileInputStream
对象。解锁文档。
PDF通过调用 EncryptionServiceClient
对象的 unlockPDFUsingPassword
或 unlockPDFUsingCredential
方法。
要解锁使用密码加密的PDF文档,请调用 unlockPDFUsingPassword
方法,并传递以下值:
com.adobe.idp.Document
包含密码加密PDF文档的对象。要解锁使用证书加密的PDF文档,请调用 unlockPDFUsingCredential
方法,并传递以下值:
com.adobe.idp.Document
包含证书加密PDF文档的对象。此 unlockPDFUsingPassword
和 unlockPDFUsingCredential
方法都返回 com.adobe.idp.Document
对象,您可以将该对象传递给另一个AEM Forms Java方法以执行操作。
执行AEM Forms操作。
对解锁的PDF文档执行AEM Forms操作,以满足您的业务要求。 例如,假设您要将使用权限应用到已解锁的PDF文档,请传递 com.adobe.idp.Document
返回的对象 unlockPDFUsingPassword
或 unlockPDFUsingCredential
方法 ReaderExtensionsServiceClient
对象的 applyUsageRights
方法。
另请参阅
快速入门(SOAP模式):使用Java API解锁加密的PDF文档 (SOAP模式)
使用加密API(Web服务)解锁加密的PDF文档:
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义: http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
.
Replace localhost
包含托管AEM Forms的服务器的IP地址。
创建加密服务客户端。
创建 EncryptionServiceClient
对象。
创建 EncryptionServiceClient.Endpoint.Address
对象 System.ServiceModel.EndpointAddress
构造函数。 将指定WSDL的字符串值传递给AEM Forms服务(例如, http://localhost:8080/soap/services/EncryptionService?WSDL
.) 您无需使用 lc_version
属性。 创建服务引用时使用此属性。)
创建 System.ServiceModel.BasicHttpBinding
对象,方法是获取 EncryptionServiceClient.Endpoint.Binding
字段。 将返回值强制转换为 BasicHttpBinding
.
设置 System.ServiceModel.BasicHttpBinding
对象的 MessageEncoding
字段至 WSMessageEncoding.Mtom
. 此值可确保使用MTOM。
通过执行以下任务启用基本HTTP身份验证:
EncryptionServiceClient.ClientCredentials.UserName.UserName
.EncryptionServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
到字段 BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
到字段 BasicHttpBindingSecurity.Security.Mode
.获取加密的PDF文档。
BLOB
对象。System.IO.FileStream
对象,方法是调用其构造函数并传递一个字符串值,该字符串值表示加密PDF文档的文件位置和打开文件的模式。System.IO.FileStream
对象。 您可以通过获取 System.IO.FileStream
对象的 Length
属性。System.IO.FileStream
对象的 Read
方法,并传递字节数组、起始位置和要读取的流长度。BLOB
对象,方法是将 BLOB
对象的 MTOM
数据成员。解锁文档。
PDF通过调用 EncryptionServiceClient
对象的 unlockPDFUsingPassword
或 unlockPDFUsingCredential
方法。
要解锁使用密码加密的PDF文档,请调用 unlockPDFUsingPassword
方法,并传递以下值:
BLOB
包含密码加密PDF文档的对象。要解锁使用证书加密的PDF文档,请调用 unlockPDFUsingCredential
方法,并传递以下值:
BLOB
包含证书加密PDF文档的对象。此 unlockPDFUsingPassword
和 unlockPDFUsingCredential
方法都返回 com.adobe.idp.Document
传递给其他AEM Forms方法以执行操作的对象。
执行AEM Forms操作。
对解锁的PDF文档执行AEM Forms操作,以满足您的业务要求。 例如,假定您要将使用权限应用到已解锁的PDF文档,请传递 BLOB
返回的对象 unlockPDFUsingPassword
或 unlockPDFUsingCredential
方法 ReaderExtensionsServiceClient
对象的 applyUsageRights
方法。
另请参阅
您可以使用Java加密服务API或Web服务加密服务API以编程方式确定保护PDF文档的加密类型。 有时需要动态确定PDF文档是否加密,如果是,则确定加密类型。 例如,您可以确定PDF文档是使用基于密码的加密还是使用Rights Management策略进行保护。
PDF文档可通过以下加密类型进行保护:
有关加密服务的详细信息,请参见 AEM Forms的服务参考.
要确定保护PDF文档的加密类型,请执行以下步骤:
包括项目文件
在开发项目中包含必要的文件。 如果要使用Java创建客户端应用程序,请包含必要的JAR文件。 如果使用Web服务,请确保包含代理文件。
必须将以下JAR文件添加到项目的类路径中:
创建服务客户端
要以编程方式执行加密服务操作,您必须创建加密服务客户端。 如果您使用的是Java加密服务API,请创建 EncrytionServiceClient
对象。 如果您使用的是Web服务加密服务API,请创建 EncryptionServiceService
对象。
获取加密的PDF文档
您必须获取PDF文档以确定保护它的加密类型。
确定加密类型
您可以确定保护PDF文档的加密类型。 如果PDF文档未受到保护,则加密服务会通知您PDF文档未受到保护。
另请参阅
确定使用加密API (Java)保护PDF文档的加密类型:
包括项目文件。
在Java项目的类路径中包含客户端JAR文件,例如adobe-encryption-client.jar。
创建服务客户端。
ServiceClientFactory
包含连接属性的对象。EncryptionServiceClient
对象,使用它的构造函数传递 ServiceClientFactory
对象。获取加密的PDF文档。
java.io.FileInputStream
对象,通过使用其构造函数并传递指定PDF文档位置的字符串值来表示PDF文档。com.adobe.idp.Document
对象,使用它的构造函数传递 java.io.FileInputStream
对象。确定加密类型。
EncryptionServiceClient
对象的 getPDFEncryption
方法和传递 com.adobe.idp.Document
包含PDF文档的对象。 此方法会返回 EncryptionTypeResult
对象。EncryptionTypeResult
对象的 getEncryptionType
方法。 此方法会返回 EncryptionType
指定加密类型的枚举值。 例如,如果PDF文档受基于密码的加密保护,则此方法将返回 EncryptionType.PASSWORD
.另请参阅
确定使用加密API (Web服务)保护PDF文档的加密类型:
包括项目文件。
创建使用MTOM的Microsoft .NET项目。 确保使用以下WSDL定义: http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
.
Replace localhost
包含托管AEM Forms的服务器的IP地址。
创建服务客户端。
创建 EncryptionServiceClient
对象。
创建 EncryptionServiceClient.Endpoint.Address
对象 System.ServiceModel.EndpointAddress
构造函数。 将指定WSDL的字符串值传递给AEM Forms服务(例如, http://localhost:8080/soap/services/EncryptionService?WSDL
.) 您无需使用 lc_version
属性。 创建服务引用时使用此属性。)
创建 System.ServiceModel.BasicHttpBinding
对象,方法是获取 EncryptionServiceClient.Endpoint.Binding
字段。 将返回值强制转换为 BasicHttpBinding
.
设置 System.ServiceModel.BasicHttpBinding
对象的 MessageEncoding
字段至 WSMessageEncoding.Mtom
. 此值可确保使用MTOM。
通过执行以下任务启用基本HTTP身份验证:
EncryptionServiceClient.ClientCredentials.UserName.UserName
.EncryptionServiceClient.ClientCredentials.UserName.Password
.HttpClientCredentialType.Basic
到字段 BasicHttpBindingSecurity.Transport.ClientCredentialType
.BasicHttpSecurityMode.TransportCredentialOnly
到字段 BasicHttpBindingSecurity.Security.Mode
.获取加密的PDF文档。
BLOB
对象。System.IO.FileStream
对象,方法是调用其构造函数并传递一个字符串值,该字符串值表示加密PDF文档的文件位置和打开文件的模式。System.IO.FileStream
对象。 您可以通过获取 System.IO.FileStream
对象的 Length
属性。System.IO.FileStream
对象的 Read
方法,并传递字节数组、起始位置和要读取的流长度。BLOB
对象,方法是将 BLOB
对象的 MTOM
数据成员。确定加密类型。
EncryptionServiceClient
对象的 getPDFEncryption
方法并传递 BLOB
包含PDF文档的对象。 此方法会返回 EncryptionTypeResult
对象。EncryptionTypeResult
对象的 encryptionType
数据方法。 例如,如果PDF文档受基于密码的加密保护,则此数据成员的值为 EncryptionType.PASSWORD
.另请参阅