當使用互動式PDF表單做為輸入時,您可以組合非互動式PDF檔案。 也就是說,假設您有一個表單,使用者可以使用它在其欄位中輸入資料。 您可以將該表單傳遞至Assembler服務,導致Assembler服務傳回PDF檔案,防止使用者將資料輸入其欄位。 本檔案是非互動式PDF表單。 例如,下圖顯示代表互動式表單的抵押申請。
在本討論中,假設使用了以下DDX文檔。
<?xml version="1.0" encoding="UTF-8"?>
<DDX xmlns="https://ns.adobe.com/DDX/1.0/">
<PDF result="out.pdf">
<PDF source="inDoc"/>
<NoXFA/>
</PDF>
</DDX>
在此DDX文檔中,請注意源屬性被分配了值inDoc
。 在僅將一個輸入的PDF文檔傳遞給Assembler服務並返回一個PDF文檔,並調用invokeOneDocument
操作的情況下,請將值inDoc
分配給PDF源屬性。 調用invokeOneDocument
操作時,inDoc
值是必須在DDX文檔中指定的預定義鍵。
相反地,將兩個或兩個以上輸入的PDF文檔傳遞到Assembler服務時,可以調用invokeDDX
操作。 在這種情況下,請將輸入PDF文檔的檔案名指定給source
屬性。
此DDX文檔包含NoXFA
元素,該元素指示Assembler服務返回非互動式PDF文檔。
如果輸入的PDF檔案是以Acrobat表格或靜態XFA表格為基礎,Assembler服務就可以組合非互動式PDF檔案,而輸出服務不會成為AEM表格安裝的一部分。 不過,如果輸入的PDF檔案是動態XFA表單,則輸出服務必須是AEM表單安裝的一部分。 如果在組裝動態XFA表單時,輸出服務不屬於AEM表單安裝的一部分,則會擲回例外。 請參閱建立檔案輸出串流。
在閱讀本節之前,建議您熟悉使用Assembler服務來組合PDF檔案。 本節不討論概念,例如建立包含輸入檔案的系列物件,或學習如何從傳回的系列物件擷取結果。 (請參閱程式設計匯整PDF檔案)。
如需Assembler服務的詳細資訊,請參閱AEM Forms的服務參考。
有關DDX文檔的詳細資訊,請參閱匯編器服務和DDX參考。
若要組合非互動式PDF檔案,請執行下列工作:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
必須將下列JAR檔案添加到項目的類路徑中:
如果AEM Forms部署在JBoss以外的支援J2EE應用程式伺服器上,您必須將adobe-utilities.jar和jbossall-client.jar檔案取代為JAR檔案,而AEM Forms部署在該J2EE應用程式伺服器上。
建立Assembler客戶端
在以寫程式方式執行匯編器操作之前,必須建立匯編器服務客戶端。
參考現有的DDX檔案
必須參考DDX檔案才能組合PDF檔案。 此DDX文檔必須包含NoXFA
元素,該元素指示Assembler服務返回非互動式PDF文檔。
參考互動式PDF檔案
互動式PDF檔案必須參考並傳遞至Assembler服務,才能取回非互動式PDF檔案。
設定執行時期選項
您可以設定運行時選項,以控制Assembler服務在執行作業時的行為。 例如,您可以設定一個選項,指示Assembler服務在遇到錯誤時繼續處理作業。
組合PDF檔案
建立Assembler服務客戶端後,請參考DDX文檔,參考互動式PDF文檔,並設定運行時選項,您可以調用invokeOneDocument
操作。 由於只有一個輸入的PDF文檔會傳遞給Assembler服務並返回一個文檔,因此您可以使用invokeOneDocument
操作,而不使用invokeDDX
操作。
儲存非互動式PDF檔案
如果僅將單一PDF文檔傳遞到Assembler服務,Assembler服務將返回單一文檔,而不是集合對象。 也就是說,調用invokeOneDocument
操作時,將返回單個文檔。 由於本節中引用的DDX文檔包含建立非互動式PDF文檔的說明,因此Assembler服務返回可另存為PDF檔案的非互動式PDF文檔。
另請參閱
使用Assembler Service API(Java)來組合非互動式PDF檔案:
包含專案檔案。
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-assembler-client.jar。
建立Assembler客戶端。
ServiceClientFactory
對象。ServiceClientFactory
對象,建立AssemblerServiceClient
對象。參考現有的DDX檔案。
java.io.FileInputStream
對象。java.io.FileInputStream
對象,建立com.adobe.idp.Document
對象。參考互動式PDF檔案。
java.io.FileInputStream
物件。com.adobe.idp.Document
物件並傳遞包含PDF檔案的java.io.FileInputStream
物件。 此com.adobe.idp.Document
物件會傳遞至invokeOneDocument
方法。設定執行時期選項。
AssemblerOptionSpec
對象,該對象儲存運行時選項。AssemblerOptionSpec
對象的方法,設定運行時選項以滿足您的業務要求。 例如,若要指示Assembler服務在發生錯誤時繼續處理作業,請叫用AssemblerOptionSpec
物件的setFailOnError
方法並傳遞false
。組合PDF檔案。
叫用AssemblerServiceClient
物件的invokeOneDocument
方法並傳遞下列值:
com.adobe.idp.Document
對象。 請確定此DDX檔案包含PDF來源元素的inDoc
值。com.adobe.idp.Document
物件。com.adobe.livecycle.assembler.client.AssemblerOptionSpec
對象,它指定運行時選項,包括預設字型和作業日誌級別。invokeOneDocument
方法會傳回包含非互動式PDF檔案的com.adobe.idp.Document
物件。
儲存非互動式PDF檔案。
java.io.File
物件,並確定副檔名為。pdf。Document
物件的copyToFile
方法,將Document
物件的內容複製至檔案。 請確定您使用invokeOneDocument
方法傳回的Document
物件。使用Assembler Service API(web service)來組合非互動式PDF檔案:
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 請確定您使用下列WSDL定義:http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
。
將localhost
取代為代管AEM Forms之伺服器的IP位址。
建立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驗證:
AssemblerServiceClient.ClientCredentials.UserName.UserName
。AssemblerServiceClient.ClientCredentials.UserName.Password
。HttpClientCredentialType.Basic
分配給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType
。BasicHttpSecurityMode.TransportCredentialOnly
分配給欄位BasicHttpBindingSecurity.Security.Mode
。參考現有的DDX檔案。
BLOB
對象。 BLOB
物件用來儲存DDX檔案。System.IO.FileStream
對象的建構子並傳遞一個字串值,該字串值表示DDX文檔的檔案位置和開啟檔案的模式。System.IO.FileStream
對象內容的位元組陣列。 您可以取得System.IO.FileStream
物件的Length
屬性,以判斷位元組陣列的大小。System.IO.FileStream
物件的Read
方法,以串流資料填入位元組陣列。 傳遞要讀取的位元組陣列、起始位置和串流長度。MTOM
對象的欄位分配位元組陣列的內容來填充BLOB
對象。參考互動式PDF檔案。
BLOB
對象。 BLOB
物件用來儲存輸入的PDF檔案。 此BLOB
對象作為參數傳遞給invokeOneDocument
。System.IO.FileStream
對象,該字串值表示輸入PDF文檔的檔案位置和開啟檔案的模式。System.IO.FileStream
對象內容的位元組陣列。 您可以取得System.IO.FileStream
物件的Length
屬性,以判斷位元組陣列的大小。System.IO.FileStream
物件的Read
方法,以串流資料填入位元組陣列。 傳遞要讀取的位元組陣列、起始位置和串流長度。MTOM
對象的欄位分配位元組陣列的內容來填充BLOB
對象。設定執行時期選項。
AssemblerOptionSpec
對象,該對象儲存運行時選項。AssemblerOptionSpec
對象的資料成員分配值,設定運行時選項以滿足您的業務要求。 例如,要指示Assembler服務在出現錯誤時繼續處理作業,請將false
分配給AssemblerOptionSpec
對象的failOnError
資料成員。組合PDF檔案。
叫用AssemblerServiceClient
物件的invokeOneDocument
方法並傳遞下列值:
BLOB
對象BLOB
物件AssemblerOptionSpec
對象invokeOneDocument
方法會傳回包含非互動式PDF檔案的BLOB
物件。
儲存非互動式PDF檔案。
System.IO.FileStream
對象,該字串值表示非互動PDF文檔的檔案位置以及在中開啟檔案的模式。invokeOneDocument
方法返回的BLOB
對象的內容。 取得BLOB
物件的MTOM
欄位值,以填入位元組陣列。System.IO.BinaryWriter
對象的建構子並傳遞System.IO.FileStream
對象,以建立<a0/>對象。System.IO.BinaryWriter
物件的Write
方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。另請參閱