本檔案中的範例和範例僅適用於JEE環境上的AEM Forms。
關於加密服務
加密服務可讓您加密和解密檔案。 當文檔加密時,其內容將變得不可讀。 授權用戶可以解密文檔以獲得對內容的訪問。 如果PDF檔案使用密碼加密,使用者必須先指定開啟的密碼,才能在Adobe Reader或Adobe Acrobat中檢視該檔案。 同樣地,如果PDF檔案使用憑證加密,使用者必須使用與用來加密PDF檔案的憑證(私密金鑰)對應的公開金鑰來解密PDF檔案。
您可以使用Encryption服務完成以下任務:
如需加密服務的詳細資訊,請參閱AEM Forms的服務參考。
當您使用密碼加密PDF檔案時,使用者必須指定密碼才能在Adobe Reader或Acrobat中開啟PDF檔案。 此外,在對檔案執行其他AEM Forms作業(例如數位簽署PDF檔案)之前,必須先解除鎖定密碼加密的PDF檔案。
如果您將加密的PDF檔案上傳至AEM Forms存放庫,它將無法解密PDF檔案並擷取XDP內容。 建議您不要在將檔案上傳至AEM Forms儲存庫之前加密檔案。 (請參閱編寫資源。)
如需加密服務的詳細資訊,請參閱AEM Forms的服務參考。
要使用密碼加密PDF文檔,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
必須將下列JAR檔案添加到項目的類路徑中:
建立加密客戶端API對象
要以寫程式方式執行加密服務操作,必須建立加密服務客戶端。
取得PDF檔案以加密
您必須取得未加密的PDF檔案,才能使用密碼來加密檔案。 如果您嘗試保護已加密的PDF檔案,會造成例外。
設定加密運行時選項
若要使用密碼加密PDF檔案,請指定4個值,包括2個密碼值。 第一個密碼值用於加密PDF文檔,在開啟PDF文檔時必須指定。 第二個密碼值(稱為主密碼值)用於從PDF文檔中刪除加密。 密碼值區分大小寫,這兩個密碼值不能是相同的值。
您必須指定要加密的PDF檔案資源。 您可以加密整份PDF檔案、除檔案中繼資料外的所有內容,或僅加密檔案的附件。 如果您只加密檔案的附件,當使用者嘗試存取檔案附件時,會提示使用者輸入密碼。
在加密PDF檔案時,您可以指定與安全檔案相關的權限。 透過指定權限,您可以控制開啟密碼加密PDF檔案的使用者可執行的動作。 例如,若要成功擷取表單資料,您必須設定下列權限:
權限指定為PasswordEncryptionPermission
枚舉值。
新增密碼
在擷取不安全的PDF檔案並設定加密執行時值後,您可以在PDF檔案中新增密碼。
將加密的PDF檔案儲存為PDF檔案
您可以將密碼加密的PDF檔案儲存為PDF檔案。
另請參閱
使用Encryption API(Java),以密碼加密PDF檔案:
包含專案檔案。
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-encryption-client.jar。
建立加密用戶端API。
ServiceClientFactory
對象。ServiceClientFactory
對象,建立EncryptionServiceClient
對象。取得要加密的PDF檔案。
java.io.FileInputStream
對象,該對象表示要加密的PDF文檔,方法是使用其建構子並傳遞指定PDF文檔位置的字串值。java.io.FileInputStream
對象,建立com.adobe.idp.Document
對象。設定加密運行時選項。
PasswordEncryptionOptionSpec
對象的建構子建立對象。PasswordEncryptionOptionSpec
物件的setEncryptOption
方法並傳遞指定要加密之檔案資源的PasswordEncryptionOption
列舉值,以指定要加密的PDF檔案資源。 例如,若要加密整個PDF檔案,包括其中繼資料及其附件,請指定PasswordEncryptionOption.ALL
。ArrayList
建構函式建立儲存加密權限的java.util.List
物件。java.util.List
對象「s add
」方法並傳遞與要設定的權限相對應的枚舉值來指定權限。 例如,若要設定允許使用者複製PDF檔案中資料的權限,請指定PasswordEncryptionPermission.PASSWORD_EDIT_COPY
。 (請針對每個要設定的權限重複此步驟)。PasswordEncryptionOptionSpec
物件的setCompatability
方法並傳遞指定Acrobat相容性等級的列舉值,以指定Acrobat相容性選項。 例如,您可以指定PasswordEncryptionCompatability.ACRO_7
。PasswordEncryptionOptionSpec
物件的setDocumentOpenPassword
方法並傳遞代表開啟密碼的字串值,以開啟加密的PDF檔案。PasswordEncryptionOptionSpec
物件的setPermissionPassword
方法並傳遞代表主密碼的字串值,從PDF檔案移除加密。新增密碼。
叫用EncryptionServiceClient
物件的encryptPDFUsingPassword
方法並傳遞下列值,以加密PDF檔案:
com.adobe.idp.Document
對象。PasswordEncryptionOptionSpec
對象。encryptPDFUsingPassword
方法會傳回包含密碼加密PDF檔案的com.adobe.idp.Document
物件。
將加密的PDF檔案儲存為PDF檔案。
java.io.File
物件,並確定副檔名為。pdf。com.adobe.idp.Document
物件的copyToFile
方法,將com.adobe.idp.Document
物件的內容複製至檔案。 請確定您使用encryptPDFUsingPassword
方法傳回的com.adobe.idp.Document
物件。另請參閱
快速入門(SOAP模式):使用Java API加密PDF檔案
使用Encryption API(web service),以密碼加密PDF檔案:
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 請確定您使用下列WSDL定義:http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
。
將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
。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
資料成員,以填充BLOB
對象。設定加密運行時選項。
PasswordEncryptionOptionSpec
對象。PasswordEncryptionOptionSpec
物件的encryptOption
資料成員指派PasswordEncryptionOption
列舉值,以指定要加密的PDF檔案資源。 若要加密整個PDF,包括其中繼資料及其附件,請指派PasswordEncryptionOption.ALL
給此資料成員。PasswordEncryptionOptionSpec
物件的compatability
資料成員指派PasswordEncryptionCompatability
列舉值,以指定Acrobat相容性選項。 例如,將PasswordEncryptionCompatability.ACRO_7
指派給此資料成員。PasswordEncryptionOptionSpec
物件的documentOpenPassword
資料成員指派代表開啟密碼的字串值,以開啟加密的PDF檔案。PasswordEncryptionOptionSpec
物件的permissionPassword
資料成員,以移除PDF檔案的加密。新增密碼。
叫用EncryptionServiceClient
物件的encryptPDFUsingPassword
方法並傳遞下列值,以加密PDF檔案:
BLOB
對象。PasswordEncryptionOptionSpec
對象。encryptPDFUsingPassword
方法會傳回包含密碼加密PDF檔案的BLOB
物件。
將加密的PDF檔案儲存為PDF檔案。
System.IO.FileStream
對象的建構子並傳遞一個字串值來建立對象,該字串值表示受保護PDF文檔的檔案位置。encryptPDFUsingPassword
方法返回的BLOB
對象的資料內容。 獲取BLOB
對象MTOM
資料成員的值,以填充位元組陣列。System.IO.BinaryWriter
對象的建構子並傳遞System.IO.FileStream
對象,以建立對象。System.IO.BinaryWriter
物件的Write
方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。另請參閱
憑證式加密可讓您透過公開金鑰技術,為特定收件者加密檔案。 可以為不同的收件者授予不同的檔案權限。 公鑰技術使加密的許多方面成為可能。 演算法用來產生兩個大數字,稱為keys,具有以下屬性:
其中一個金鑰可當成使用者的私密金鑰。 請務必僅讓使用者存取此金鑰。 另一個金鑰是使用者的公開金鑰,可與其他人共用。
公開金鑰憑證包含使用者的公開金鑰和識別資訊。 X.509格式用於儲存憑證。 證書通常由證書頒發機構(CA)核發和數位簽名,該機構是一個認可的實體,提供對證書有效性的信任度。 憑證有到期日,之後即不再有效。 此外,證書撤銷清單(CRL)提供在證書到期日前被撤銷的證書資訊。 憑證授權機構會定期發佈CRL。 證書的撤銷狀態也可以通過網路上的聯機證書狀態協定(OCSP)來檢索。
如果您將加密的PDF檔案上傳至AEM Forms存放庫,它將無法解密PDF檔案並擷取XDP內容。 建議您不要在將檔案上傳至AEM Forms儲存庫之前加密檔案。 (請參閱編寫資源。)
您必須先確保將憑證新增至AEM Forms,才能使用憑證加密PDF檔案。 憑證是使用管理控制台或使用信任管理器API以程式設計方式新增。 (請參閱使用Trust Manager API匯入認證。)
如需加密服務的詳細資訊,請參閱AEM Forms的服務參考。
要使用證書加密PDF文檔,請執行以下步驟:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
必須將下列JAR檔案添加到項目的類路徑中:
建立加密客戶端API對象
要以寫程式方式執行加密服務操作,必須建立加密服務客戶端。 如果您使用Java Encryption Service API,請建立EncrytionServiceClient
物件。 如果您使用Web服務Encryption Service API,請建立EncryptionServiceService
對象。
取得PDF檔案以加密
您必須取得未加密的PDF檔案才能加密。 如果您嘗試保護已加密的PDF檔案,則會擲回例外。
參考憑證
若要使用憑證來加密PDF檔案,請參考用來加密PDF檔案的憑證。 憑證是。cer檔案、.crt檔案或。pem檔案。 PKCS#12檔案用於儲存具有相應證書的私鑰。
使用憑證加密PDF檔案時,請指定與安全檔案相關的權限。 透過指定權限,您可以控制開啟憑證加密PDF檔案的使用者可執行的動作。
設定加密運行時選項
指定要加密的PDF檔案資源。 您可以加密整份PDF檔案、除檔案中繼資料以外的所有內容,或僅加密檔案的附件。
建立憑證加密的PDF檔案
擷取不安全的PDF檔案、參考憑證並設定執行時期選項後,您就可以建立憑證加密的PDF檔案。 在PDF檔案加密後,您需要對應的公開金鑰才能解密。
將加密的PDF檔案儲存為PDF檔案
您可以將加密的PDF檔案儲存為PDF檔案。
另請參閱
使用Encryption API(Java)使用憑證來加密PDF檔案:
包含專案檔案。
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-encryption-client.jar。
建立加密客戶端API對象。
ServiceClientFactory
對象。ServiceClientFactory
對象,建立EncryptionServiceClient
對象。取得要加密的PDF檔案。
java.io.FileInputStream
對象,該對象表示要加密的PDF文檔,方法是使用其建構子並傳遞指定PDF文檔位置的字串值。java.io.FileInputStream
對象,建立com.adobe.idp.Document
對象。參考憑證。
java.util.List
的建構函式建立可儲存權限資訊的物件。java.util.List
物件的add
方法並傳遞CertificateEncryptionPermissions
列舉值,以指定與加密檔案相關的權限,此列舉值代表授予開啟安全PDF檔案之使用者的權限。 例如,若要指定所有權限,請傳遞CertificateEncryptionPermissions.PKI_ALL_PERM
。Recipient
對象。java.io.FileInputStream
對象,該對象表示通過使用其建構子並傳遞指定證書位置的字串值來加密PDF文檔的證書。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檔案。
使用憑證來加密PDF檔案,方法是叫用EncryptionServiceClient
物件的encryptPDFUsingCertificates
方法並傳遞下列值:
com.adobe.idp.Document
對象。java.util.List
對象。CertificateEncryptionOptionSpec
對象。encryptPDFUsingCertificates
方法會傳回包含憑證加密PDF檔案的com.adobe.idp.Document
物件。
將加密的PDF檔案儲存為PDF檔案。
java.io.File
物件,並確定副檔名為。pdf。com.adobe.idp.Document
物件的copyToFile
方法,將com.adobe.idp.Document
物件的內容複製至檔案。 請確定您使用encryptPDFUsingCertificates
方法傳回的com.adobe.idp.Document
物件。另請參閱
快速入門(SOAP模式):使用Java API使用憑證加密PDF檔案
使用Encryption API(web service)使用憑證來加密PDF檔案:
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 請確定您使用下列WSDL定義:http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
。
將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
。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
方法,並傳遞要讀取的位元組陣列、開始位置和串流長度,以串流資料填入位元組陣列。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
對象。CertificateEncryptionOptionSpec
物件的option
資料成員指派CertificateEncryptionOption
列舉值,以指定要加密的PDF檔案資源。 要加密整個PDF文檔,包括其元資料及其附件,請將CertificateEncryptionOption.ALL
分配給此資料成員。CertificateEncryptionOptionSpec
物件的compat
資料成員指派CertificateEncryptionCompatibility
列舉值,以指定Acrobat相容性選項。 例如,將CertificateEncryptionCompatibility.ACRO_7
指派給此資料成員。建立憑證加密的PDF檔案。
使用憑證來加密PDF檔案,方法是叫用EncryptionServiceService
物件的encryptPDFUsingCertificates
方法並傳遞下列值:
BLOB
對象。Object
陣列。CertificateEncryptionOptionSpec
對象。encryptPDFUsingCertificates
方法會傳回包含憑證加密PDF檔案的BLOB
物件。
將加密的PDF檔案儲存為PDF檔案。
System.IO.FileStream
對象的建構子並傳遞一個字串值來建立對象,該字串值表示受保護PDF文檔的檔案位置。encryptPDFUsingCertificates
方法返回的BLOB
對象的資料內容。 獲取BLOB
對象binaryData
資料成員的值,以填充位元組陣列。System.IO.BinaryWriter
對象的建構子並傳遞System.IO.FileStream
對象,以建立對象。System.IO.BinaryWriter
物件的Write
方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。另請參閱
您可從PDF檔案移除憑證式加密,讓使用者在Adobe Reader或Acrobat中開啟PDF檔案。 若要從使用憑證加密的PDF檔案移除加密,必須參考公開金鑰。 從PDF檔案移除加密後,就不再安全。
如需加密服務的詳細資訊,請參閱AEM Forms的服務參考。
要從PDF文檔中刪除基於證書的加密,請執行以下步驟:
包含專案檔案
將必要的檔案加入您的開發專案中。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
必須將下列JAR檔案添加到項目的類路徑中:
建立加密服務客戶端
要以寫程式方式執行加密服務操作,必須建立加密服務客戶端。 如果您使用Java Encryption Service API,請建立EncrytionServiceClient
物件。 如果您使用Web服務Encryption Service API,請建立EncryptionServiceService
對象。
取得加密的PDF檔案
您必須取得加密的PDF檔案,才能移除憑證式加密。 如果您嘗試從未加密的PDF檔案移除加密,則會擲出例外。 同樣地,如果您嘗試從密碼加密的檔案中移除憑證式加密,則會擲出例外。
刪除加密
若要從加密的PDF檔案移除憑證式加密,您需要加密的PDF檔案和與用來加密PDF檔案的金鑰相對應的私密金鑰。 從加密的PDF檔案移除憑證式加密時,會指定私密金鑰的別名值。 如需公開金鑰的詳細資訊,請參閱使用憑證加密PDF檔案。
私密金鑰會儲存在AEM Forms信任商店中。 將證書放在那裡時,會指定別名值。
儲存PDF檔案
從加密的PDF檔案移除憑證式加密後,您就可將PDF檔案儲存為PDF檔案。 使用者可在Adobe Reader或Acrobat中開啟PDF檔案。
另請參閱
使用Encryption API(Java)從PDF檔案移除憑證式加密:
包含專案檔案。
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-encryption-client.jar。
建立加密服務客戶端。
ServiceClientFactory
對象。ServiceClientFactory
對象,建立EncryptionServiceClient
對象。取得加密的PDF檔案。
java.io.FileInputStream
物件。java.io.FileInputStream
對象,建立com.adobe.idp.Document
對象。刪除加密。
調用EncryptionServiceClient
物件的removePDFCertificateSecurity
方法並傳遞下列值,以移除PDF檔案中的憑證式加密:
com.adobe.idp.Document
對象。removePDFCertificateSecurity
方法傳回包含不安全PDF檔案的com.adobe.idp.Document
物件。
儲存PDF檔案。
java.io.File
物件,並確定副檔名為。pdf。com.adobe.idp.Document
物件的copyToFile
方法,將Document
物件的內容複製至檔案。 請確定您使用removePDFCredentialSecurity
方法傳回的com.adobe.idp.Document
物件。另請參閱
快速入門(SOAP模式):使用Java API移除憑證式加密
使用Encryption API(web service)移除憑證式加密:
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 請確定您使用下列WSDL定義:http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
。
將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
。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
資料成員,以填充BLOB
對象。刪除加密。
叫用EncryptionServiceClient
物件的removePDFCertificateSecurity
方法並傳遞下列值:
BLOB
物件,包含代表加密PDF檔案的檔案串流資料。removePDFCredentialSecurity
方法傳回包含不安全PDF檔案的BLOB
物件。
儲存PDF檔案。
System.IO.FileStream
對象的建構子並傳遞一個字串值來建立對象,該字串值表示不安全PDF文檔的檔案位置。removePDFPasswordSecurity
方法返回的BLOB
對象的內容。 獲取BLOB
對象MTOM
資料成員的值,以填充位元組陣列。System.IO.BinaryWriter
對象的建構子並傳遞System.IO.FileStream
對象,以建立對象。System.IO.BinaryWriter
物件的Write
方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。另請參閱
您可從PDF檔案移除密碼加密,讓使用者在Adobe Reader或Acrobat中開啟PDF檔案,而不需指定密碼。 從PDF檔案移除密碼加密後,檔案就不再安全。
如需加密服務的詳細資訊,請參閱AEM Forms的服務參考。
要從PDF文檔中刪除基於密碼的加密,請執行以下步驟:
包含專案檔案
將必要的檔案加入您的開發專案中。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
必須將下列JAR檔案添加到項目的類路徑中:
建立加密服務客戶端
要以寫程式方式執行加密服務操作,必須建立加密服務客戶端。 如果您使用Java Encryption Service API,請建立EncrytionServiceClient
物件。 如果您使用Web服務Encryption Service API,請建立EncryptionServiceService
對象。
取得加密的PDF檔案
您必須取得加密的PDF檔案,才能移除密碼型加密。 如果您嘗試從未加密的PDF檔案移除加密,則會擲出例外。
刪除密碼
若要從加密的PDF檔案移除密碼型加密,您需要加密的PDF檔案和用於從PDF檔案移除加密的主密碼值。 用於開啟密碼加密的PDF文檔的密碼不能用於刪除加密。 當使用密碼加密PDF檔案時,會指定主密碼。 (請參閱使用密碼加密PDF檔案)。
儲存PDF檔案
在Encryption服務移除PDF檔案中以密碼為基礎的加密後,您可以將PDF檔案儲存為PDF檔案。 使用者可以在Adobe Reader或Acrobat中開啟PDF檔案,毋需指定密碼。
另請參閱
使用Encryption API(Java)從PDF檔案移除密碼加密:
包含專案檔案。
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-encryption-client.jar。
建立加密服務客戶端。
ServiceClientFactory
對象。ServiceClientFactory
對象,建立EncryptionServiceClient
對象。取得加密的PDF檔案。
java.io.FileInputStream
物件。java.io.FileInputStream
對象,建立com.adobe.idp.Document
對象。刪除密碼。
調用EncryptionServiceClient
物件的removePDFPasswordSecurity
方法並傳遞下列值,以移除PDF檔案中以密碼為基礎的加密:
com.adobe.idp.Document
物件,其中包含加密的PDF檔案。removePDFPasswordSecurity
方法傳回包含不安全PDF檔案的com.adobe.idp.Document
物件。
儲存PDF檔案。
java.io.File
物件,並確定副檔名為。pdf。com.adobe.idp.Document
物件的copyToFile
方法,將Document
物件的內容複製至檔案。 請確定您使用removePDFPasswordSecurity
方法傳回的Document
物件。另請參閱
使用Encryption API(web service)移除密碼型加密:
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 請確定您使用下列WSDL定義:http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
。
將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
。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
資料成員,以填充BLOB
對象。刪除密碼。
叫用EncryptionServiceService
物件的removePDFPasswordSecurity
方法並傳遞下列值:
BLOB
物件,包含代表加密PDF檔案的檔案串流資料。removePDFPasswordSecurity
方法傳回包含不安全PDF檔案的BLOB
物件。
儲存PDF檔案。
System.IO.FileStream
對象的建構子並傳遞一個字串值來建立對象,該字串值表示不安全PDF文檔的檔案位置。removePDFPasswordSecurity
方法返回的BLOB
對象的內容。 獲取BLOB
對象MTOM
資料成員的值,以填充位元組陣列。System.IO.BinaryWriter
對象的建構子並傳遞System.IO.FileStream
對象,以建立對象。System.IO.BinaryWriter
物件的Write
方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。另請參閱
必須先解除鎖定密碼加密或憑證加密的PDF檔案,才能對其執行其他AEM Forms作業。 如果您嘗試對加密的PDF檔案執行操作,將會產生例外。 在解除鎖定加密的PDF檔案後,您可以對其執行一或多個操作。 這些作業可以屬於其他服務,例如Acrobat Reader DC擴充功能服務。
如需加密服務的詳細資訊,請參閱AEM Forms的服務參考。
要解除鎖定加密的PDF文檔,請執行以下步驟:
包含專案檔案
將必要的檔案加入您的開發專案中。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
必須將下列JAR檔案添加到項目的類路徑中:
建立加密服務客戶端
要以寫程式方式執行加密服務操作,必須建立加密服務客戶端。 如果您使用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服務。
另請參閱
使用加密API(Java)解除鎖定加密的PDF檔案:
包含專案檔案。
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-encryption-client.jar。
建立加密服務客戶端。
ServiceClientFactory
對象。ServiceClientFactory
對象,建立EncryptionServiceClient
對象。取得加密的PDF檔案。
java.io.FileInputStream
物件。java.io.FileInputStream
對象,建立com.adobe.idp.Document
對象。解除鎖定檔案。
叫用EncryptionServiceClient
物件的unlockPDFUsingPassword
或unlockPDFUsingCredential
方法,解除鎖定加密的PDF檔案。
要解鎖使用密碼加密的PDF文檔,請調用unlockPDFUsingPassword
方法並傳遞以下值:
com.adobe.idp.Document
物件,其中包含密碼加密的PDF檔案。要解鎖使用證書加密的PDF文檔,請調用unlockPDFUsingCredential
方法並傳遞以下值:
com.adobe.idp.Document
物件,其中包含憑證加密的PDF檔案。unlockPDFUsingPassword
和unlockPDFUsingCredential
方法都會傳回您傳遞至其他AEM Forms Java方法以執行作業的com.adobe.idp.Document
物件。
執行AEM Forms作業。
對解除鎖定的PDF檔案執行AEM Forms作業,以符合您的業務需求。 例如,假設您要將使用權限套用至解除鎖定的PDF檔案,請將unlockPDFUsingPassword
或unlockPDFUsingCredential
方法傳回的com.adobe.idp.Document
物件傳遞至ReaderExtensionsServiceClient
物件的applyUsageRights
方法。
另請參閱
快速入門(SOAP模式):使用Java API (SOAP模式)解除加密的PDF檔案鎖定
使用Encryption API(web service)解除鎖定加密的PDF檔案:
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 請確定您使用下列WSDL定義:http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
。
將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
。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
對象的MTOM
資料成員,以填充BLOB
對象。解除鎖定檔案。
叫用EncryptionServiceClient
物件的unlockPDFUsingPassword
或unlockPDFUsingCredential
方法,解除鎖定加密的PDF檔案。
要解鎖使用密碼加密的PDF文檔,請調用unlockPDFUsingPassword
方法並傳遞以下值:
BLOB
物件,其中包含密碼加密的PDF檔案。要解鎖使用證書加密的PDF文檔,請調用unlockPDFUsingCredential
方法並傳遞以下值:
BLOB
物件,其中包含憑證加密的PDF檔案。unlockPDFUsingPassword
和unlockPDFUsingCredential
方法都會傳回您傳遞至其他AEM Forms方法以執行作業的com.adobe.idp.Document
物件。
執行AEM Forms作業。
對解除鎖定的PDF檔案執行AEM Forms作業,以符合您的業務需求。 例如,假設您要將使用權限套用至解除鎖定的PDF檔案,請將unlockPDFUsingPassword
或unlockPDFUsingCredential
方法傳回的BLOB
物件傳遞至ReaderExtensionsServiceClient
物件的applyUsageRights
方法。
另請參閱
您可以使用Java Encryption Service API或web service Encryption Service API,以程式設計方式決定要保護PDF檔案的加密類型。 有時需要動態判斷PDF檔案是否已加密,若已加密,則需要加密類型。 例如,您可以決定PDF檔案是使用密碼加密或Rights Management原則來保護。
PDF檔案可受下列加密類型保護:
如需加密服務的詳細資訊,請參閱AEM Forms的服務參考。
要確定保護PDF文檔的加密類型,請執行以下步驟:
包含專案檔案
將必要的檔案加入您的開發專案中。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
必須將下列JAR檔案添加到項目的類路徑中:
建立服務客戶端
要以寫程式方式執行加密服務操作,必須建立加密服務客戶端。 如果您使用Java Encryption Service API,請建立EncrytionServiceClient
物件。 如果您使用Web服務Encryption Service API,請建立EncryptionServiceService
對象。
取得加密的PDF檔案
您必須取得PDF檔案,以決定要保護它的加密類型。
確定加密類型
您可以決定保護PDF檔案的加密類型。 如果PDF檔案未受保護,則加密服務會通知您PDF檔案未受到保護。
另請參閱
使用Encryption API(Java)確定保護PDF檔案的加密類型:
包含專案檔案。
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-encryption-client.jar。
建立服務客戶端。
ServiceClientFactory
對象。ServiceClientFactory
對象,建立EncryptionServiceClient
對象。取得加密的PDF檔案。
java.io.FileInputStream
物件。java.io.FileInputStream
對象,建立com.adobe.idp.Document
對象。確定加密類型。
EncryptionServiceClient
物件的getPDFEncryption
方法並傳遞包含PDF檔案的com.adobe.idp.Document
物件,以判斷加密類型。 此方法返回EncryptionTypeResult
對象。EncryptionTypeResult
物件的getEncryptionType
方法。 此方法傳回指定加密類型的EncryptionType
列舉值。 例如,如果PDF檔案受到密碼加密的保護,此方法會傳回EncryptionType.PASSWORD
。另請參閱
使用Encryption API(web service)確定保護PDF檔案的加密類型:
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 請確定您使用下列WSDL定義:http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1
。
將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
。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
對象的MTOM
資料成員,以填充BLOB
對象。確定加密類型。
EncryptionServiceClient
物件的getPDFEncryption
方法,並傳遞包含PDF檔案的BLOB
物件。 此方法返回EncryptionTypeResult
對象。EncryptionTypeResult
物件的encryptionType
資料方法的值。 例如,如果PDF檔案使用密碼加密進行保護,則此資料成員的值為EncryptionType.PASSWORD
。另請參閱