本檔案中的範例和範例僅適用於JEE環境上的AEM Forms。
可以通過寫程式方式驗證Assembler服務使用的DDX文檔。 也就是說,使用Assembler服務API,可以確定DDX文檔是否有效。 例如,如果您從舊版AEM Forms升級,而您想要確保DDX檔案有效,則可使用Assembler服務API來驗證它。
如需Assembler服務的詳細資訊,請參閱AEM Forms的服務參考。
有關DDX文檔的詳細資訊,請參閱匯編器服務和DDX參考。
要驗證DDX文檔,請執行以下任務:
包含專案檔案
在您的開發專案中加入必要的檔案。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。
必須將下列JAR檔案添加到項目的類路徑中:
如果AEM Forms部署在JBoss以外的支援J2EE應用程式伺服器上,您必須將adobe-utilities.jar和jbossall-client.jar檔案取代為JAR檔案,而AEM Forms部署在該J2EE應用程式伺服器上。
建立PDF匯寫程式式用戶端
在以寫程式方式執行匯編器操作之前,必須建立匯編器服務客戶端。
參考現有的DDX檔案
要驗證DDX文檔,必須引用現有DDX文檔。
設定執行時期選項以驗證DDX檔案
驗證DDX文檔時,必須設定特定的運行時選項,這些選項指示Assembler服務驗證DDX文檔,而不是執行它。 此外,還可以增加Assembler服務寫入日誌檔案的資訊量。
執行驗證
建立Assembler服務客戶端、引用DDX文檔並設定運行時選項後,可以調用invokeDDX
操作來驗證DDX文檔。 驗證DDX文檔時,可以將null
作為映射參數傳遞(此參數通常儲存匯編程式要求執行DDX文檔中指定的操作的PDF文檔)。
如果驗證失敗,則會拋出異常,而且日誌檔案包含詳細資訊,說明DDX文檔無效的原因,可從OperationException
實例獲取。 一旦通過基本的XML解析和模式檢查,就會執行對DDX規範的驗證。 DDX文檔中的所有錯誤都在日誌中指定。
將驗證結果保存到日誌檔案中
Assembler服務返回可寫入XML日誌檔案的驗證結果。 匯編器服務寫入日誌檔案的詳細程度取決於您設定的運行時選項。
另請參閱
使用Assembler Service API(Java)驗證DDX檔案:
包含專案檔案。
在Java專案的類別路徑中包含用戶端JAR檔案,例如adobe-assembler-client.jar。
建立PDF匯寫程式式用戶端。
ServiceClientFactory
對象。ServiceClientFactory
對象,建立AssemblerServiceClient
對象。參考現有的DDX檔案。
java.io.FileInputStream
對象。java.io.FileInputStream
對象,建立com.adobe.idp.Document
對象。設定執行時期選項以驗證DDX檔案。
AssemblerOptionSpec
對象,該對象儲存運行時選項。AssemblerOptionSpec
物件的setValidateOnly方法並傳遞true
來驗證DDX檔案。AssemblerOptionSpec
物件的getLogLevel
方法,並傳遞符合您需求的字串值,以設定Assembler服務寫入記錄檔的資訊量。 驗證DDX文檔時,需要將更多資訊寫入日誌檔案,以幫助驗證過程。 因此,您可以傳遞值FINE
或FINER
。執行驗證。
叫用AssemblerServiceClient
物件的invokeDDX
方法並傳遞下列值:
com.adobe.idp.Document
對象。null
值。com.adobe.livecycle.assembler.client.AssemblerOptionSpec
對象。invokeDDX
方法返回AssemblerResult
對象,該對象包含指定DDX文檔是否有效的資訊。
將驗證結果保存到日誌檔案中。
java.io.File
物件,並確定副檔名為。xml。AssemblerResult
物件的getJobLog
方法。 此方法會傳回包含驗證資訊的com.adobe.idp.Document
例項。com.adobe.idp.Document
物件的copyToFile
方法,將com.adobe.idp.Document
物件的內容複製至檔案。如果DDX文檔無效,則拋出OperationException
。 在catch語句中,可以調用OperationException
對象的getJobLog
方法。
另請參閱
快速入門(SOAP模式):使用Java API (SOAP模式)驗證DDX檔案
使用Assembler Service API(web service)驗證DDX文檔:
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 請確定您使用下列WSDL定義:http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1
。
將localhost替換為表單伺服器的IP地址。
建立PDF匯寫程式式用戶端。
使用其預設建構子建立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
對象。設定執行時期選項以驗證DDX檔案。
AssemblerOptionSpec
對象,該對象儲存運行時選項。AssemblerOptionSpec
物件的validateOnly
資料成員,以驗證DDX檔案。AssemblerOptionSpec
對象的logLevel
資料成員分配字串值,設定Assembler服務寫入日誌檔案的資訊量。 方法驗證DDX文檔時,需要將更多資訊寫入日誌檔案,以幫助驗證過程。 因此,您可以指定值FINE
或FINER
。 如需您可設定之執行時期選項的詳細資訊,請參閱AEM Forms API Reference中的AssemblerOptionSpec
類別參考。執行驗證。
叫用AssemblerServiceClient
物件的invokeDDX
方法並傳遞下列值:
BLOB
對象。Map
對象的null
值。AssemblerOptionSpec
對象。invokeDDX
方法返回AssemblerResult
對象,該對象包含指定DDX文檔是否有效的資訊。
將驗證結果保存到日誌檔案中。
System.IO.FileStream
對象的建構子並傳遞一個字串值,該字串值表示日誌檔案的檔案位置和開啟檔案的模式。 請確定副檔名為。xml。AssemblerResult
對象的jobLog
資料成員的值,建立儲存日誌資訊的BLOB
對象。BLOB
對象內容的位元組陣列。 取得BLOB
物件的MTOM
欄位值,以填入位元組陣列。System.IO.BinaryWriter
對象的建構子並傳遞System.IO.FileStream
對象,以建立對象。System.IO.BinaryWriter
物件的Write
方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。如果DDX文檔無效,則拋出OperationException
。 在catch語句中,可以獲取OperationException
對象jobLog
成員的值。
另請參閱