使用Java API加密PDF檔案

使用加密API (Java)以密碼加密PDF檔案:

  1. 包含專案檔案。

    在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-encryption-client.jar。

  2. 建立加密使用者端API。

    • 建立包含連線屬性的ServiceClientFactory物件。
    • 使用它的建構函式並傳遞ServiceClientFactory物件來建立EncryptionServiceClient物件。
  3. 取得要加密的PDF檔案。

    • 建立代表要加密之PDF檔案的java.io.FileInputStream物件,方法是使用其建構函式,並傳遞指定PDF檔案位置的字串值。
    • 使用它的建構函式並傳遞java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
  4. 設定加密執行階段選項。

    • 透過叫用它的建構函式來建立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檔案移除加密。
  5. 新增密碼。

    透過叫用EncryptionServiceClient物件的encryptPDFUsingPassword方法並傳遞下列值來加密PDF檔案:

    • 包含要以密碼加密之PDF檔案的com.adobe.idp.Document物件。
    • 包含加密執行階段選項的PasswordEncryptionOptionSpec物件。

    encryptPDFUsingPassword方法傳回包含密碼加密PDF檔案的com.adobe.idp.Document物件。

  6. 將加密的PDF檔案儲存為PDF檔案。

    • 建立java.io.File物件,並確定副檔名為.pdf。
    • 叫用com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案。 確定您使用的是encryptPDFUsingPassword方法傳回的com.adobe.idp.Document物件。

使用網站服務API加密PDF檔案

使用加密API (Web服務)以密碼加密PDF檔案:

  1. 包含專案檔案。

    建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義: http://localhost:8080/soap/services/EncryptionService?WSDL&lc_version=9.0.1

    注意
    localhost取代為主控AEM Forms之伺服器的IP位址。
  2. 建立加密使用者端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驗證:

      • 將AEM表單使用者名稱指派給欄位EncryptionServiceClient.ClientCredentials.UserName.UserName
      • 將對應的密碼值指派給欄位EncryptionServiceClient.ClientCredentials.UserName.Password
      • 將常數值HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 將常數值BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode
  3. 取得要加密的PDF檔案。

    • 使用物件的建構函式建立BLOB物件。 BLOB物件是用來儲存以密碼加密的PDF檔案。
    • 建立System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表要加密之PDF檔案的檔案位置及開啟檔案的模式的字串值。
    • 建立位元組陣列以儲存System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。
    • 呼叫System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。
    • 將位元組陣列的內容指派給BLOB物件的MTOM資料成員,以填入BLOB物件。
  4. 設定加密執行階段選項。

    • 使用物件的建構函式建立PasswordEncryptionOptionSpec物件。
    • 指定PasswordEncryptionOption列舉值給PasswordEncryptionOptionSpec物件的encryptOption資料成員,以指定要加密的PDF檔案資源。 若要加密整個PDF,包括其中繼資料及其附件,請將PasswordEncryptionOption.ALL指派給此資料成員。
    • PasswordEncryptionCompatability列舉值指派給PasswordEncryptionOptionSpec物件的compatability資料成員,以指定Acrobat相容性選項。 例如,將PasswordEncryptionCompatability.ACRO_7指派給此資料成員。
    • 指定密碼值,讓使用者藉由指定字串值來開啟加密的PDF檔案,該字串值代表PasswordEncryptionOptionSpec物件之documentOpenPassword資料成員的開啟密碼。
    • 指定密碼值,可讓使用者透過將代表主密碼的字串值指派給PasswordEncryptionOptionSpec物件的permissionPassword資料成員,從PDF檔案中移除加密。
  5. 新增密碼。

    透過叫用EncryptionServiceClient物件的encryptPDFUsingPassword方法並傳遞下列值來加密PDF檔案:

    • 包含要以密碼加密之PDF檔案的BLOB物件。
    • 包含加密執行階段選項的PasswordEncryptionOptionSpec物件。

    encryptPDFUsingPassword方法傳回包含密碼加密PDF檔案的BLOB物件。

  6. 將加密的PDF檔案儲存為PDF檔案。

    • 建立System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表受保護PDF檔案檔案位置的字串值。
    • 建立位元組陣列,儲存encryptPDFUsingPassword方法傳回的BLOB物件的資料內容。 取得BLOB物件的MTOM資料成員的值,以填入位元組陣列。
    • 透過叫用它的建構函式並傳遞System.IO.FileStream物件來建立System.IO.BinaryWriter物件。
    • 呼叫System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。