組合加密的PDF檔案

您可以使用Assembler服務,以密碼加密PDF檔案。 使用密碼加密PDF檔案後,使用者必須指定密碼才能在Adobe Reader或Acrobat檢視PDF檔案。 要使用密碼加密PDF文檔,DDX文檔必須包含加密PDF文檔所需的加密元素值。

在本討論中,假設使用了以下DDX文檔。

 <?xml version="1.0" encoding="UTF-8"?> 
 <DDX xmlns="https://ns.adobe.com/DDX/1.0/"> 
        <PDF result="EncryptLoan.pdf" encryption="userProtect"> 
         <PDF source="inDoc" /> 
     </PDF> 
     <PasswordEncryptionProfile name="userProtect" compatibilityLevel="Acrobat7"> 
         <OpenPassword>AdobeOpen</OpenPassword> 
        </PasswordEncryptionProfile> 
 </DDX>

在此DDX文檔中,請注意源屬性被分配了值inDoc。 在僅將一個輸入的PDF文檔傳遞給Assembler服務並返回一個PDF文檔,並調用invokeOneDocument操作的情況下,請將值inDoc分配給PDF源屬性。 調用invokeOneDocument操作時,inDoc值是必須在DDX文檔中指定的預定義鍵。

相反地,將兩個或兩個以上輸入的PDF文檔傳遞到Assembler服務時,可以調用invokeDDX操作。 在這種情況下,請將輸入PDF文檔的檔案名指定給source屬性。

Encryption服務不必是您表單安裝的一部分,AEM就能使用密碼加密PDF檔案。 請參閱加密和解密PDF檔案

注意

有關Assembler服務的詳細資訊,請參見AEM Forms的服務參考

注意

有關DDX文檔的詳細資訊,請參閱匯編器服務和DDX參考

步驟摘要

要組合加密的PDF文檔,請執行以下步驟:

  1. 包含專案檔案。
  2. 建立PDF匯寫程式式用戶端。
  3. 參考現有的DDX檔案。
  4. 參考不安全的PDF檔案。
  5. 設定執行時期選項。
  6. 加密文檔。
  7. 儲存加密的PDF檔案。

包含專案檔案

將必要的檔案加入您的開發專案中。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。

必須將下列JAR檔案添加到項目的類路徑中:

  • adobe-livecycle-client.jar
  • adobe-usermanager-client.jar
  • adobe-assembler-client.jar
  • adobe-utilities.jar(如果AEM Forms部署在JBoss上,則為必要)
  • jbossall-client.jar(如果AEM Forms部署在JBoss上,則為必需)

如果AEM Forms部署在JBoss以外的受支援J2EE應用程式伺服器上,則必須將adobe-utilities.jar和jbossall-client.jar檔案替換為AEM Forms部署在的J2EE應用程式伺服器專用的JAR檔案。 有關所有AEM FormsJAR檔案的位置資訊,請參見包括AEM FormsJava庫檔案

建立Assembler客戶端

在以寫程式方式執行匯編器操作之前,必須建立匯編器服務客戶端。

參考現有的DDX檔案

必須參考DDX檔案才能組合PDF檔案。 例如,請考慮本節中介紹的DDX文檔。 若要加密PDF檔案,DDX檔案必須包含PasswordEncryptionProfile元素。

參考不安全的PDF檔案

必須參考不安全的PDF檔案,並將它傳送至Assembler服務,才能加密它。 如果您參考已加密的PDF檔案,則會擲出例外。

設定執行時期選項

您可以設定運行時選項,以控制Assembler服務在執行作業時的行為。 例如,您可以設定一個選項,指示Assembler服務在遇到錯誤時繼續處理作業。 有關可設定的運行時選項的資訊,請參閱AEM FormsAPI參考中的AssemblerOptionSpec類參考。

加密檔案

在建立Assembler服務客戶端後,請參考包含加密資訊的DDX文檔、引用不安全的PDF文檔並設定運行時選項,您可以調用invokeOneDocument操作。 由於只有一個輸入的PDF文檔被傳遞到Assembler服務(並且返回一個文檔),因此您可以使用invokeOneDocument操作而不使用invokeDDX操作。

儲存加密的PDF檔案

如果僅將單一PDF文檔傳遞給Assembler服務,Assembler服務將返回單一文檔而非集合對象。 也就是說,調用invokeOneDocument操作時,將返回單個文檔。 由於本節中引用的DDX文檔包含加密資訊,因此Assembler服務返回使用密碼加密的PDF文檔。

另請參閱

包含AEM FormsJava庫檔案

設定連接屬性

以程式設計方式組合PDF檔案

使用Java API組合加密的PDF檔案

  1. 包含專案檔案。

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

  2. 建立Assembler客戶端。

    • 建立包含連接屬性的ServiceClientFactory對象。
    • 使用其建構子並傳遞ServiceClientFactory對象,建立AssemblerServiceClient對象。
  3. 參考現有的DDX檔案。

    • 使用DDX文檔的建構子並傳遞指定DDX檔案位置的字串值,建立代表DDX文檔的java.io.FileInputStream對象。
    • 使用其建構子並傳遞java.io.FileInputStream對象,建立com.adobe.idp.Document對象。
  4. 參考不安全的PDF檔案。

    • 使用其建構函式並傳遞不安全PDF檔案的位置,以建立java.io.FileInputStream物件。
    • 建立com.adobe.idp.Document物件並傳遞包含PDF檔案的java.io.FileInputStream物件。 此com.adobe.idp.Document物件會傳遞至invokeOneDocument方法。
  5. 設定執行時期選項。

    • 使用其建構子建立一個AssemblerOptionSpec對象,該對象儲存運行時選項。
    • 通過調用屬於AssemblerOptionSpec對象的方法,設定運行時選項以滿足您的業務要求。 例如,若要指示Assembler服務在發生錯誤時繼續處理作業,請叫用AssemblerOptionSpec物件的setFailOnError方法並傳遞false
  6. 加密文檔。

    叫用AssemblerServiceClient物件的invokeOneDocument方法並傳遞下列值:

    • 代表DDX文檔的com.adobe.idp.Document對象。 請確定此DDX檔案包含PDF來源元素的inDoc值。
    • com.adobe.idp.Document物件,其中包含不安全的PDF檔案。
    • 一個com.adobe.livecycle.assembler.client.AssemblerOptionSpec對象,它指定運行時選項,包括預設字型和作業日誌級別。

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

  7. 儲存加密的PDF檔案。

    • 建立java.io.File物件,並確定副檔名為。pdf。
    • 調用Document物件的copyToFile方法,將Document物件的內容複製至檔案。 請確定您使用invokeOneDocument方法傳回的Document物件。

另請參閱

快速入門(SOAP模式):使用Java API組合加密的PDF檔案

使用web service API組合加密的PDF檔案

  1. 包含專案檔案。

    建立使用MTOM的Microsoft .NET專案。 在設定服務引用時,請確保使用以下WSDL定義:http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1

    注意

    localhost取代為代管AEM Forms的伺服器的IP位址。

  2. 建立Assembler客戶端。

    • 使用其預設建構子建立AssemblerServiceClient對象。

    • 使用System.ServiceModel.EndpointAddress建構函式建立AssemblerServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞給AEM Forms服務(例如http://localhost:8080/soap/services/AssemblerService?blob=mtom)。 您不需要使用lc_version屬性。 建立服務參考時,將使用此屬性。

    • 獲取AssemblerServiceClient.Endpoint.Binding欄位的值,建立System.ServiceModel.BasicHttpBinding對象。 將返回值轉換為BasicHttpBinding

    • System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。

    • 執行下列工作以啟用基本HTTP驗證:

      • 將表AEM單用戶名分配給欄位AssemblerServiceClient.ClientCredentials.UserName.UserName
      • 將相應的口令值分配給欄位AssemblerServiceClient.ClientCredentials.UserName.Password
      • 將常數值HttpClientCredentialType.Basic分配給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 將常數值BasicHttpSecurityMode.TransportCredentialOnly分配給欄位BasicHttpBindingSecurity.Security.Mode
  3. 參考現有的DDX檔案。

    • 使用其建構子建立BLOB對象。 BLOB物件用來儲存DDX檔案。
    • 通過調用System.IO.FileStream對象的建構子並傳遞一個字串值,該字串值表示DDX文檔的檔案位置和開啟檔案的模式。
    • 建立儲存System.IO.FileStream對象內容的位元組陣列。 您可以取得System.IO.FileStream物件的Length屬性,以判斷位元組陣列的大小。
    • 調用System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、開始位置和串流長度,以串流資料填入位元組陣列。
    • 通過為MTOM對象的欄位分配位元組陣列的內容來填充BLOB對象。
  4. 參考不安全的PDF檔案。

    • 使用其建構子建立BLOB對象。 BLOB物件用來儲存輸入的PDF檔案。 此BLOB對象作為參數傳遞給invokeOneDocument
    • 通過調用其建構子並傳遞一個字串值來建立System.IO.FileStream對象,該字串值表示輸入PDF文檔的檔案位置和開啟檔案的模式。
    • 建立儲存System.IO.FileStream對象內容的位元組陣列。 您可以取得System.IO.FileStream物件的Length屬性,以判斷位元組陣列的大小。
    • 調用System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、開始位置和串流長度,以串流資料填入位元組陣列。
    • 通過為MTOM對象的欄位分配位元組陣列的內容來填充BLOB對象。
  5. 設定執行時期選項。

    • 使用其建構子建立一個AssemblerOptionSpec對象,該對象儲存運行時選項。
    • 通過為屬於AssemblerOptionSpec對象的資料成員分配值,設定運行時選項以滿足您的業務要求。 例如,要指示Assembler服務在出現錯誤時繼續處理作業,請將false分配給AssemblerOptionSpec對象的failOnError資料成員。
  6. 加密文檔。

    叫用AssemblerServiceClient物件的invokeOneDocument方法並傳遞下列值:

    • 代表DDX文檔的BLOB對象
    • BLOB物件,代表不安全的PDF檔案
    • 指定運行時選項的AssemblerOptionSpec對象

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

  7. 儲存加密的PDF檔案。

    • 通過調用其建構子並傳遞一個字串值來建立System.IO.FileStream對象,該字串值表示加密PDF文檔的檔案位置和開啟檔案的模式。
    • 建立一個位元組陣列,用於儲存invokeOneDocument方法返回的BLOB對象的內容。 獲取BLOB對象MTOM資料成員的值,以填充位元組陣列。
    • 調用System.IO.BinaryWriter對象的建構子並傳遞System.IO.FileStream對象,以建立對象。
    • 調用System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。

另請參閱

使用MTOM叫用AEM Forms

本頁內容

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now