組合PDFPortfolio

本文中的範例和範例僅適用於AEM Forms的JEE環境。

您可以使用Assembler Java和web service API來組合PDFPortfolio。 作品集可以結合多種類型的檔案,包括Word檔、影像檔(例如jpeg檔)和PDF檔案。 作品集的版面可設定為不同的樣式,例如「預覽格線」(Grid with Preview)、「影像上的​」(On a Image)版面,或甚至「旋轉」(Revolve)。

下圖為具有​On an Image​樣式版面的作品集螢幕擷取。

ap_ap_portfolio

建立PDFPortfolio是傳遞檔案集的無紙化替代選擇。 使用AEM Forms,您可以通過使用結構化DDX文檔調用Assembler服務來建立資料夾。 以下DDX檔案是建立PDFPortfolio的DDX檔案範例。

 <DDX xmlns="https://ns.adobe.com/DDX/1.0/">
     <PDF result="portfolio1.pdf">
         <Portfolio>
             <Navigator source="myNavigator">
                 <Resource name="navigator/image.xxx" source="myImage.png"/>
             </Navigator>
         </Portfolio>
         <PackageFiles source="dog1"  >
              <FieldData name="X">72</FieldData>
             <FieldData name="Y">72</FieldData>
             <File filename="saint_bernard.jpg" mimetype="image/jpeg"/>
         </PackageFiles>
         <PackageFiles source="dog2"  >
             <FieldData name="X">120</FieldData>
             <FieldData name="Y">216</FieldData>
             <File filename="greyhound.pdf"/>
         </PackageFiles>
     </PDF>
 </DDX>

DXX檔案必須包含Portfolio標籤,並附上巢狀Navigator標籤。 請注意,只有當myNavigator被指派為onImage版面導覽器時,才需要<Resource name="navigator/image.xxx" source="myImage.png"/>標籤:AdobeOnImage.nav。 此標籤允許Assembler服務選擇要用作資料夾背景的影像。 包含PackageFilesFile標籤,以定義封裝檔案的檔案名稱和MIME類型。

注意

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

注意

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

步驟摘要

若要建立PDFPortfolio,請執行下列工作:

  1. 包含專案檔案。
  2. 建立PDF匯寫程式式用戶端。
  3. 參考現有的DDX檔案。
  4. 參考所需檔案。
  5. 設定執行時期選項。
  6. 組合作品集。
  7. 儲存組合的作品集。

包含專案檔案

在您的開發專案中加入必要的檔案。 如果要使用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上,則為必需)

建立PDF匯寫程式式用戶端

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

參考現有的DDX檔案

必須參考DDX檔案才能組合PDFPortfolio。 此DDX文檔必須包含PortfolioNavigatorPackageFiles元素。

參考所需檔案

要組合PDFPortfolio,請參考所有表示要組合的文檔的檔案。 例如,將DDX文檔中指定的所有影像檔案傳遞到Assembler服務。 請注意,在本節中指定的DDX檔案中會參照這些檔案:myImage.png​和​saint_bernard.jpg

在組合PDFPortfolio時,將NAV檔案(導覽檔)傳遞至Assembler服務。 傳遞給Assembler服務的NAV檔案取決於要建立的PDFPortfolio類型。 例如,若要建立​On an Image​版面,請傳遞AdobeOnImage.nav檔案。 您可以在下列資料夾中找到NAV檔案:

<Install folder>\Acrobat 9.0\Acrobat\Navigators

從Acrobat 9(或更高版本)安裝目錄複製NAV檔案。 將NAV檔案置於您的用戶端應用程式可存取的位置。 所有檔案都會傳遞到Map集合對象中的Assembler服務。

注意

與「組合PDFPortfolio」相關的快速入門使用AdobeOnImage.nav。

設定執行時期選項

您可以設定運行時選項,以控制Assembler服務在執行作業時的行為。 例如,您可以設定一個選項,指示Assembler服務在遇到錯誤時繼續處理作業。

組合作品集

要組合PDFPortfolio,請調用invokeDDX操作。 Assembler服務返回集合對象中的PDFPortfolio。

儲存組合的作品集

PDFPortfolio會在系列物件中傳回。 重複收集物件,並將PDFPortfolio儲存為PDF檔案。

另請參閱

使用Java API組合PDFPortfolio

使用web service API匯整PDFPortfolio

包含AEM FormsJava庫檔案

設定連接屬性

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

使用Java API組合PDFPortfolio

使用Assembler Service API(Java)組合PDFPortfolio:

  1. 包含專案檔案。

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

  2. 建立PDF匯寫程式式用戶端。

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

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

    • 使用HashMap建構函式建立java.util.Map物件,用來儲存輸入的PDF檔案。

    • 使用其建構子建立java.io.FileInputStream對象。 傳遞所需NAV檔案的位置(針對建立作品集所需的每個檔案重複此工作)。

    • 建立com.adobe.idp.Document物件並傳遞包含NAV檔案的java.io.FileInputStream物件(對建立作品集所需的每個檔案重複此工作)。

    • 通過調用put方法並傳遞以下參數,將條目添加到java.util.Map對象:

      • 代表索引鍵名稱的字串值。 此值必須與DDX文檔中指定的源元素的值匹配。 (針對建立作品集所需的每個檔案重複此工作)。
      • 包含PDF文檔的com.adobe.idp.Document對象。 (針對建立作品集所需的每個檔案重複此工作)。
  5. 設定執行時期選項。

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

    叫用AssemblerServiceClient物件的invokeDDX方法並傳遞下列必要值:

    • com.adobe.idp.Document物件,代表要使用的DDX檔案
    • java.util.Map物件,包含建立PDFPortfolio所需的檔案。
    • com.adobe.livecycle.assembler.client.AssemblerOptionSpec物件,指定執行時期選項,包括預設字型和工作記錄層級

    invokeDDX方法返回一個com.adobe.livecycle.assembler.client.AssemblerResult對象,該對象包含已裝配的PDFPortfolio和發生的任何例外。

  7. 儲存組合的作品集。

    若要取得PDFPortfolio,請執行下列動作:

    • 叫用AssemblerResult物件的getDocuments方法。 此方法返回java.util.Map對象。
    • 重複java.util.Map物件,直到找到結果com.adobe.idp.Document物件。
    • 叫用com.adobe.idp.Document物件的copyToFile方法來擷取PDFPortfolio。

另請參閱

快速入門(SOAP模式):使用Java API組合PDFPortfolio

包含AEM FormsJava庫檔案

設定連接屬性

使用web service API組合PDFPortfolio

使用Assembler Service API(web service)組合PDFPortfolio:

  1. 包含專案檔案。

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

    注意

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

  2. 建立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驗證:

      • 將表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. 參考所需檔案。

    • 對於每個輸入檔案,使用其建構子建立BLOB對象。 BLOB對象用於儲存輸入檔案。
    • 通過調用System.IO.FileStream對象的建構子並傳遞一個字串值來建立對象,該字串值表示輸入檔案的檔案位置以及開啟檔案的模式。
    • 建立儲存System.IO.FileStream對象內容的位元組陣列。 您可以取得System.IO.FileStream物件的Length屬性,以判斷位元組陣列的大小。
    • 呼叫System.IO.FileStream物件的Read方法,以串流資料填入位元組陣列。 傳遞要讀取的位元組陣列、起始位置和串流長度。
    • 通過為MTOM對象的欄位分配位元組陣列的內容來填充BLOB對象。
    • 建立MyMapOf_xsd_string_To_xsd_anyType對象。 此收集物件用於儲存建立PDFPortfolio所需的輸入檔案。
    • 對於每個輸入檔案,建立一個MyMapOf_xsd_string_To_xsd_anyType_Item對象。
    • MyMapOf_xsd_string_To_xsd_anyType_Item對象的key欄位分配代表鍵名的字串值。 此值必須與DDX文檔中指定的元素值匹配。 (對每個輸入檔案執行此任務。)
    • 將儲存輸入檔案的BLOB對象分配給MyMapOf_xsd_string_To_xsd_anyType_Item對象的value欄位。 (請對每個輸入的PDF檔案執行此工作。)
    • MyMapOf_xsd_string_To_xsd_anyType_Item對象添加到MyMapOf_xsd_string_To_xsd_anyType對象。 調用MyMapOf_xsd_string_To_xsd_anyType對象的Add方法並傳遞MyMapOf_xsd_string_To_xsd_anyType對象。 (請對每個輸入的PDF檔案執行此工作。)
  5. 設定執行時期選項。

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

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

    • 代表DDX文檔的BLOB對象
    • 包含所需檔案的MyMapOf_xsd_string_To_xsd_anyType對象
    • 指定運行時選項的AssemblerOptionSpec對象

    invokeDDX方法返回一個AssemblerResult對象,該對象包含作業的結果和發生的任何例外。

  7. 儲存組合的作品集。

    若要取得新建立的PDFPortfolio,請執行下列動作:

    • 存取AssemblerResult物件的documents欄位,此欄位是Map物件,包含產生的PDF檔案。
    • 重複Map物件,以取得每個結果檔案。 然後,將該陣列成員的value轉換為BLOB
    • 存取PDF檔案的BLOB物件的MTOM屬性,擷取代表PDF檔案的二進位資料。 這會傳回可寫出至PDF檔案的位元組陣列。

另請參閱

使用MTOM叫用AEM Forms

使用SwaRef叫用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