建立檔案輸出資料流 creating-document-output-streams
本檔案中的範例和範例僅適用於JEE環境上的AEM Forms。
關於輸出服務
「輸出」服務可讓您將檔案輸出為PDF(包括PDF/A檔案)、PostScript、印表機控制語言(PCL)和下列標籤格式:
- 斑馬 — ZPL
- Intermec - IPL
- Datamax - DPL
- TecToshiba - TPCL
使用「輸出」服務,您可以將XML表單資料與表單設計合併,並將檔案輸出至網路印表機或檔案。
有兩種方式可以將表單設計(XDP檔案)傳遞到Output服務。 您可以將包含表單設計的com.adobe.idp.Document執行個體傳遞至Output服務。 或者,您可以傳遞一個指定表單設計位置的URI值。 這兩種方式都在 使用AEM表單 進行程式設計時進行了討論。
以下小節說明如何使用URI值將表單設計傳遞給Output服務:
以下小節說明如何在com.adobe.idp.Document執行個體中傳遞表單設計:
決定使用哪種技術時的一個考量是,如果您從其他AEM Forms服務取得表單設計,然後將其傳遞到com.adobe.idp.Document執行個體。 傳遞檔案至輸出服務 和 使用片段建立PDF檔案 區段都會顯示如何從另一個AEM Forms服務取得表單設計。 第一節 從內容服務擷取表單設計(已棄用)。 第二節 從組合器服務擷取表單設計。
如果您要從固定位置(例如檔案系統)取得表單設計,則可以使用任一技術。 也就是說,您可以指定XDP檔案的URI值或使用com.adobe.idp.Document執行個體。
若要在建立PDF檔案時,傳遞指定表單設計位置的URI值,請使用generatePDFOutput方法。 同樣地,若要在建立PDF檔案時將com.adobe.idp.Document執行個體傳遞至輸出服務,請使用generatePDFOutput2方法。
將輸出資料流傳送至網路印表機時,您也可以使用其中一種技術。 若要透過傳遞包含表單設計的com.adobe.idp.Document執行個體來傳送輸出資料流至印表機,請使用sendToPrinter2方法。 若要傳遞URI值來傳送輸出資料流至印表機,請使用sendToPrinter方法。 傳送列印資料流至印表機 區段使用sendToPrinter方法。
您可以使用「輸出」服務完成這些工作:
建立PDF檔案 creating-pdf-documents
您可以使用Output服務來建立以您提供的表單設計和XML表單資料為基礎的PDF檔案。 Output服務建立的PDF檔案不是互動式PDF檔案;使用者無法輸入或修改表單資料。
如果要建立用於長期儲存的PDF檔案,建議您建立PDF/A檔案。 (請參閱建立PDF/A檔案。)
若要建立可讓使用者輸入資料的互動式PDF表單,請使用Forms服務。 (請參閱呈現互動式PDF forms。)
步驟摘要 summary-of-steps
若要建立PDF檔案,請執行下列步驟:
- 包含專案檔案。
- 建立輸出使用者端物件。
- 參考XML資料來源。
- 設定PDF執行階段選項。
- 設定演算執行階段選項。
- 產生PDF檔案。
- 擷取作業的結果。
包含專案檔
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請務必包含Proxy檔案。
必須將下列JAR檔案新增至專案的類別路徑:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-output-client.jar
- adobe-utilities.jar (如果AEM Forms部署在JBoss上,則為必要)
- jbossall-client.jar (如果AEM Forms部署在JBoss上,則為必要)
如果將AEM Forms部署在受支援的J2EE應用程式伺服器(不是JBoss)上,則必須將adobe-utilities.jar和jbossall-client.jar檔案取代為特定於AEM Forms部署所在之J2EE應用程式伺服器的JAR檔案。
建立輸出使用者端物件
您必須先建立輸出服務使用者端物件,才能以程式設計方式執行輸出服務作業。 如果您使用Java API,請建立OutputClient物件。 如果您使用輸出Web服務API,請建立OutputServiceService物件。
參考XML資料來源
若要將資料與表單設計合併,您必須參照包含資料的XML資料來源。 您計畫填入資料的每個表單欄位都必須有XML元素。 XML元素名稱必須符合欄位名稱。 如果XML元素未對應至表單欄位,或XML元素名稱不符合欄位名稱,則會忽略該元素。 如果已指定所有XML元素,則不必比對XML元素的顯示順序。
請考量下列貸款申請表範例。
若要將資料合併至此表單設計,您必須建立與表單相對應的XML資料來源。 下列XML代表與範例抵押應用程式表單相對應的XDP XML資料來源。
<?xml version="1.0" encoding="UTF-8" ?>
- <xfa:datasets xmlns:xfa="https://www.xfa.org/schema/xfa-data/1.0/">
- <xfa:data>
- <data>
- <Layer>
<closeDate>1/26/2007</closeDate>
<lastName>Johnson</lastName>
<firstName>Jerry</firstName>
<mailingAddress>JJohnson@NoMailServer.com</mailingAddress>
<city>New York</city>
<zipCode>00501</zipCode>
<state>NY</state>
<dateBirth>26/08/1973</dateBirth>
<middleInitials>D</middleInitials>
<socialSecurityNumber>(555) 555-5555</socialSecurityNumber>
<phoneNumber>5555550000</phoneNumber>
</Layer>
- <Mortgage>
<mortgageAmount>295000.00</mortgageAmount>
<monthlyMortgagePayment>1724.54</monthlyMortgagePayment>
<purchasePrice>300000</purchasePrice>
<downPayment>5000</downPayment>
<term>25</term>
<interestRate>5.00</interestRate>
</Mortgage>
</data>
</xfa:data>
</xfa:datasets>
設定PDF執行階段選項
建立PDF檔案時,請設定檔案URI選項。 此選項指定輸出服務產生的PDF檔案的名稱和位置。
設定演算執行階段選項
建立PDF檔案時,您可以設定演算執行階段選項。 雖然這些選項並非必要專案(不同於必要專案的PDF執行階段選項),但您可以執行工作,例如改善Output服務的效能。 例如,您可以快取Output服務用來改善其效能的表單設計。
如果您使用已標籤的Acrobat表單作為輸入,則無法使用輸出服務Java或Web服務API來關閉已標籤的設定。 如果您嘗試以程式設計方式將此選項設定為false,則仍會標籤結果PDF檔案。
RenderOptionsSpec類別參考。 (請參閱AEM Forms API參考)。產生PDF檔案
在參照包含表單資料的有效XML資料來源並設定執行階段選項後,您可以叫用Output服務,使其產生PDF檔案。
產生PDF檔案時,您可以指定Output服務建立PDF檔案所需的URI值。 表單設計可儲存在伺服器檔案系統等位置或作為AEM Forms應用程式的一部分。 使用內容根URI值repository:///,可參考存在於Forms應用程式一部分的表單設計(或其他資源,例如影像檔案)。 例如,假設下列名為 Loan.xdp 的表單設計位於名為 Applications/FormsApplication 的Forms應用程式中:
若要存取上圖所示的Loan.xdp檔案,請將repository:///Applications/FormsApplication/1.0/FormsFolder/指定為傳遞至OutputClient物件之generatePDFOutput方法的第三個引數。 將表單名稱(Loan.xdp)指定為傳遞至OutputClient物件之generatePDFOutput方法的第二個引數。
如果XDP檔案包含影像(或其他資源,例如片段),請將資源放在與XDP檔案相同的應用程式資料夾中。 AEM Forms使用內容根URI作為基礎路徑來解析對影像的參照。 例如,如果Loan.xdp檔案包含影像,請確定您將該影像放在Applications/FormsApplication/1.0/FormsFolder/中。
OutputClient物件的generatePDFOutput或generatePrintedOutput方法時,您可以參考Forms應用程式URI。擷取作業的結果
Output服務執行作業之後,會傳回各種資料專案,例如指定作業是否成功的狀態XML資料。
另請參閱
使用Java API建立PDF檔案 create-a-pdf-document-using-the-java-api
使用Output API (Java)建立PDF檔案:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar。
-
建立輸出使用者端物件。
- 建立包含連線屬性的
ServiceClientFactory物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。
- 建立包含連線屬性的
-
參考XML資料來源。
- 建立
java.io.FileInputStream物件,代表用來填入PDF檔案的XML資料來源,使用它的建構函式,並傳遞指定XML檔案位置的字串值。 - 使用物件的建構函式建立
com.adobe.idp.Document物件。 傳遞java.io.FileInputStream物件。
- 建立
-
設定PDF執行階段選項。
- 使用物件的建構函式建立
PDFOutputOptionsSpec物件。 - 呼叫
PDFOutputOptionsSpec物件的setFileURI方法來設定檔案URI選項。 傳遞字串值,指定輸出服務產生的PDF檔案位置。 檔案URI選項是相對於主控AEM Forms的J2EE應用程式伺服器,而非使用者端電腦。
- 使用物件的建構函式建立
-
設定演算執行階段選項。
- 使用物件的建構函式建立
RenderOptionsSpec物件。 - 快取表單設計以透過叫用
RenderOptionsSpec物件的setCacheEnabled並傳遞true來改善輸出服務的效能。
note note NOTE 如果輸入檔案是Acrobat表單(在Acrobat中建立的表單)或已簽署或認證的XFA檔案,則您無法使用 RenderOptionsSpec物件的setPdfVersion方法設定PDF檔案的版本。 輸出PDF檔案會保留原始PDF版本。 同樣地,如果輸入檔案是Adobe PDF表單或已簽署或認證的XFA檔案,則您無法透過叫用RenderOptionsSpec物件的setTaggedPDF方法來設定已標籤的Acrobat選項。note note NOTE 如果輸入PDF檔案是經過認證或數位簽署的,則您無法使用 RenderOptionsSpec物件的setLinearizedPDF方法來設定線性PDF選項。 (請參閱數位簽署PDF檔案。) - 使用物件的建構函式建立
-
產生PDF檔案。
呼叫
OutputClient物件的generatePDFOutput方法並傳遞下列值,以建立PDF檔案:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定表單設計的名稱。
- 字串值,指定表單設計所在的內容根。
- 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
com.adobe.idp.Document物件。
generatePDFOutput方法傳回包含作業結果的OutputResult物件。note note NOTE 當透過叫用 generatePDFOutput方法產生PDF檔案時,您無法將資料與已簽署或認證的XFAPDF表單合併。 (請參閱數位簽署和認證檔案。)note note NOTE OutputResult物件的getRecordLevelMetaDataList方法傳回null.note note NOTE 您也可以叫用 OutputClient物件的generatePDFOutput2方法來建立PDF檔案。 (請參閱將Content Services (已過時)中的檔案傳遞至輸出服務。) -
擷取作業的結果。
- 透過叫用
OutputResult物件的getStatusDoc方法,擷取代表generatePDFOutput作業狀態的com.adobe.idp.Document物件。 此方法會傳回指定作業是否成功的狀態XML資料。 - 建立包含作業結果的
java.io.File物件。 確認副檔名為.xml。 - 叫用
com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案(請確定您使用的是getStatusDoc方法傳回的com.adobe.idp.Document物件)。
雖然Output服務會將PDF檔案寫入傳遞至
PDFOutputOptionsSpec物件之setFileURI方法的引數所指定的位置,但您可以透過叫用OutputResult物件的getGeneratedDoc方法,以程式設計方式擷取PDF/A檔案。 - 透過叫用
另請參閱
使用Web服務API建立PDF檔案 create-a-pdf-document-using-the-web-service-api
使用輸出API (Web服務)建立PDF檔案:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立輸出使用者端物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至AEM Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。 但是,請指定?blob=mtom以使用MTOM。 -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給欄位
OutputServiceClient.ClientCredentials.UserName.UserName。 - 將對應的密碼值指派給欄位
OutputServiceClient.ClientCredentials.UserName.Password。 - 將常數值
HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType。 - 將常數值
BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode。
- 將AEM表單使用者名稱指派給欄位
-
-
參考XML資料來源。
- 使用物件的建構函式建立
BLOB物件。BLOB物件是用來儲存將與PDF檔案合併的XML資料。 - 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表包含表單資料之XML檔案的檔案位置的字串值。 - 建立位元組陣列以儲存
System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。 - 呼叫
System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。 - 以位元組陣列的內容指派其
MTOM欄位,填入BLOB物件。
- 使用物件的建構函式建立
-
設定PDF執行階段選項
- 使用物件的建構函式建立
PDFOutputOptionsSpec物件。 - 透過指派字串值來設定File URI選項,該字串值指定輸出服務產生給
PDFOutputOptionsSpec物件的fileURI資料成員的PDF檔案位置。 檔案URI選項是相對於主控AEM Forms的J2EE應用程式伺服器,而非使用者端電腦。
- 使用物件的建構函式建立
-
設定演算執行階段選項。
- 使用物件的建構函式建立
RenderOptionsSpec物件。 - 快取表單設計以透過將值
true指派給RenderOptionsSpec物件的cacheEnabled資料成員來改善Output服務的效能。
note note NOTE 如果輸入檔案是Acrobat表單(在Acrobat中建立的表單)或已簽署或認證的XFA檔案,則您無法使用 RenderOptionsSpec物件的setPdfVersion方法設定PDF檔案的版本。 輸出PDF檔案會保留原始PDF版本。 同樣地,如果輸入檔案是Adobe PDF表單或已簽署或認證的XFA檔案,您就無法透過叫用RenderOptionsSpec物件的setTaggedPDF方法來設定已標籤的Acrobat選項。note note NOTE 如果輸入PDF檔案是經認證或數位簽署的,則您無法使用 RenderOptionsSpec物件的linearizedPDF成員來設定線性PDF選項。 (請參閱數位簽署PDF檔案。) - 使用物件的建構函式建立
-
產生PDF檔案。
呼叫
OutputServiceService物件的generatePDFOutput方法並傳遞下列值,以建立PDF檔案:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定表單設計的名稱。
- 字串值,指定表單設計所在的內容根。
- 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
BLOB物件。 - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將描述檔案的產生中繼資料填入此物件。 (只有Web服務呼叫才需要此引數值)。 - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將結果資料填入此物件中。 (只有Web服務呼叫才需要此引數值)。 - 包含作業結果的
OutputResult物件。 (只有Web服務呼叫才需要此引數值)。
note note NOTE 當透過叫用 generatePDFOutput方法產生PDF檔案時,您無法將資料與已簽署或認證的XFAPDF表單合併。 (請參閱數位簽署和認證檔案。)note note NOTE 您也可以叫用 OutputClient物件的generatePDFOutput2方法來建立PDF檔案。 (請參閱將Content Services (已過時)中的檔案傳遞至輸出服務。) -
擷取作業的結果。
- 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表包含結果資料之XML檔案位置的字串值。 確認副檔名為.xml。 - 建立位元組陣列,以儲存
BLOB物件的資料內容,該物件是以OutputServiceService物件的generatePDFOutput方法(第八個引數)填入的結果資料。 取得BLOB物件的MTOMfield的值,以填入位元組陣列。 - 透過叫用它的建構函式並傳遞
System.IO.FileStream物件來建立System.IO.BinaryWriter物件。 - 呼叫
System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入XML檔案。
另請參閱
- 建立
OutputServiceService物件的generateOutput方法。建立PDF/A檔案 creating-pdf-a-documents
您可以使用Output服務來建立PDF/A檔案。 由於PDF/A是用於長期儲存檔案內容的封存格式,因此所有字型全都內嵌且檔案都未壓縮。 因此,PDF/A 文件通常比標準 PDF 文件大。此外,PDF/檔案不包含音訊和視訊內容。 如同其他輸出服務工作,您提供表單設計和資料以與表單設計合併,以建立PDF/A檔案。
PDF/A-1規格包含兩個一致性層次,即a和b。兩者之間的主要差異在於邏輯結構(協助工具)支援,這並非一致性層級b所需。無論一致性層級為何,PDF/A-1會指定所有字型都內嵌在產生的PDF/A檔案中。
雖然PDF/A是封存PDF檔案的標準,但如果標準PDF檔案符合貴公司的需求,則不強制使用PDF/A進行封存。 PDF/A標準的目的是建立可長期儲存的PDF檔案,並符合檔案儲存要求。 例如,URL無法內嵌於PDF/A中,因為該URL可能會隨著時間變得無效。
您的組織必須評估自己的需求、您打算保留檔案的時間長度、檔案大小考量,並決定自己的封存策略。 您可以使用DocConverter服務,以程式設計方式判斷PDF檔案是否符合PDF/A規範。 (請參閱以程式設計方式決定PDF/相容性。)
PDF/檔案必須使用在表單設計中指定的字型,且字型不能被取代。 因此,如果位於PDF檔案中的字型在主機作業系統(OS)上無法使用,則會發生例外狀況。
在Acrobat中開啟PDF/A檔案時,會顯示訊息,確認檔案為PDF/A檔案,如下圖所示。
步驟摘要 summary_of_steps-1
若要建立PDF/檔案,請執行下列步驟:
- 包含專案檔案。
- 建立輸出使用者端物件。
- 參考XML資料來源。
- 設定PDF/執行階段選項。
- 設定演算執行階段選項。
- 產生PDF/檔案。
- 擷取作業的結果。
包含專案檔
在您的開發專案中包含必要的檔案。 如果您使用Java建立自訂應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請務必包含Proxy檔案。
必須將下列JAR檔案新增至專案的類別路徑:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-output-client.jar
- adobe-utilities.jar (如果AEM Forms部署在JBoss上,則為必要)
- jbossall-client.jar (如果AEM Forms部署在JBoss上,則為必要)
如果將AEM Forms部署在受支援的J2EE應用程式伺服器(不是JBoss)上,則必須將adobe-utilities.jar和jbossall-client.jar檔案取代為特定於AEM Forms部署所在之J2EE應用程式伺服器的JAR檔案。
建立輸出使用者端物件
您必須先建立輸出服務使用者端物件,才能以程式設計方式執行輸出服務作業。 如果您使用Java API,請建立OutputClient物件。 如果您使用輸出Web服務API,請建立OutputServiceService物件。
參考XML資料來源
若要將資料與表單設計合併,您必須參照包含資料的XML資料來源。 每個要填入資料的表單欄位都必須有XML元素。 XML元素名稱必須符合欄位名稱。 如果XML元素未對應至表單欄位,或XML元素名稱不符合欄位名稱,則會忽略該元素。 如果已指定所有XML元素,則不必比對XML元素的顯示順序。
設定PDF/A執行階段選項
建立PDF/A檔案時,您可以設定「檔案URI」選項。 URI是相對於主控AEM Forms的J2EE應用程式伺服器。 也就是說,如果您設定C:\Adobe,檔案會寫入伺服器上的資料夾,而非使用者端電腦。 URI會指定輸出服務產生的PDF/A檔案的名稱和位置。
設定演算執行階段選項
建立PDF/A檔案時,您可以設定演算執行階段選項。 您可以設定的兩個PDF/A相關選項是PDFAConformance和PDFARevisionNumber值。 PDFAConformance值是指PDF檔案如何遵守指定長期保留電子檔案的要求。 此選項的有效值為A和B。 如需有關等級a和b相容性的資訊,請參閱標題為 ISO 19005-1檔案管理 的PDF/A-1 ISO規格。
PDFARevisionNumber值是指PDF/A檔案的修訂版本號碼。 如需PDF/A檔案修訂版本的資訊,請參閱標題為 ISO 19005-1檔案管理 的PDF/A-1 ISO規格。
false。 PDF/A 1A將永遠是標籤的PDF檔案。 此外,建立PDF/A 1B檔案時,您無法將已標籤的Adobe PDF選項設為true。 PDF/A 1B將永遠是未標籤的PDF檔案。產生PDF/檔案
在您參照包含表單資料的有效XML資料來源並設定執行階段選項後,可以叫用Output服務,使其產生PDF/A檔案。
擷取作業的結果
Output服務執行作業之後,會傳回各種資料專案,例如指定作業是否成功的XML資料。
另請參閱
使用Java API建立PDF/檔案 create-a-pdf-a-document-using-the-java-api
使用Output API (Java)建立PDF/檔案:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar。
-
建立輸出使用者端物件。
- 建立包含連線屬性的
ServiceClientFactory物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。
- 建立包含連線屬性的
-
參考XML資料來源。
- 使用建構函式並傳遞指定XML檔案位置的字串值,建立代表用來填入PDF/A檔案的XML資料來源的
java.io.FileInputStream物件。 - 使用它的建構函式並傳遞
java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
- 使用建構函式並傳遞指定XML檔案位置的字串值,建立代表用來填入PDF/A檔案的XML資料來源的
-
設定PDF/執行階段選項。
- 使用物件的建構函式建立
PDFOutputOptionsSpec物件。 - 呼叫
PDFOutputOptionsSpec物件的setFileURI方法來設定檔案URI選項。 傳遞字串值,指定輸出服務產生的PDF檔案位置。 檔案URI選項是相對於主控AEM Forms的J2EE應用程式伺服器,而非使用者端電腦。
- 使用物件的建構函式建立
-
設定演算執行階段選項。
- 使用物件的建構函式建立
RenderOptionsSpec物件。 - 透過叫用
RenderOptionsSpec物件的setPDFAConformance方法並傳遞指定一致性層級的PDFAConformance列舉值來設定PDFAConformance值。 例如,若要指定一致性層級A,請傳遞PDFAConformance.A。 - 呼叫
RenderOptionsSpec物件的setPDFARevisionNumber方法並傳遞PDFARevisionNumber.Revision_1,以設定PDFARevisionNumber值。
note note NOTE PDF/A檔案的PDF版本是1.4,無論您為 RenderOptionsSpec物件的setPdfVersion方法指定哪個值。 - 使用物件的建構函式建立
-
產生PDF/檔案。
呼叫
OutputClient物件的generatePDFOutput方法並傳遞下列值,以建立PDF/A檔案:TransformationFormat列舉值。 若要產生PDF/A檔案,請指定TransformationFormat.PDFA。- 字串值,指定表單設計的名稱。
- 字串值,指定表單設計所在的內容根。
- 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
com.adobe.idp.Document物件。
generatePDFOutput方法傳回包含作業結果的OutputResult物件。note note NOTE OutputResult物件的getRecordLevelMetaDataList方法傳回null。note note NOTE 您也可以叫用 OutputClient物件的generatePDFOutput2方法來建立PDF/A檔案。 (請參閱將Content Services (已過時)中的檔案傳遞至輸出服務。) -
擷取作業的結果。
- 呼叫
OutputResult物件的getStatusDoc方法,建立代表generatePDFOutput方法狀態的com.adobe.idp.Document物件。 - 建立將包含作業結果的
java.io.File物件。 確認副檔名為.xml。 - 叫用
com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案(請確定您使用的是getStatusDoc方法傳回的com.adobe.idp.Document物件)。
note note NOTE 雖然Output服務會將PDF/A檔案寫入傳遞至 PDFOutputOptionsSpec物件之setFileURI方法的引數所指定的位置,但您可以透過叫用OutputResult物件的getGeneratedDoc方法,以程式設計方式擷取PDF/A檔案。 - 呼叫
另請參閱
使用網站服務API建立PDF/檔案 create-a-pdf-a-document-using-the-web-service-api
使用輸出API (Web服務)建立PDF/A檔案:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立輸出使用者端物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至AEM Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。 但是,請指定?blob=mtom以使用MTOM。 -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給欄位
OutputServiceClient.ClientCredentials.UserName.UserName。 - 將對應的密碼值指派給欄位
OutputServiceClient.ClientCredentials.UserName.Password。 - 將常數值
HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType。 - 將常數值
BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode。
- 將AEM表單使用者名稱指派給欄位
-
-
參考XML資料來源。
- 使用物件的建構函式建立
BLOB物件。BLOB物件是用來儲存將與PDF/A檔案合併的資料。 - 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表要加密之PDF檔案的檔案位置及開啟檔案的模式的字串值。 - 建立位元組陣列以儲存
System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。 - 呼叫
System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。 - 以位元組陣列內容指派其
MTOM欄位來填入BLOB物件。
- 使用物件的建構函式建立
-
設定PDF/執行階段選項。
- 使用物件的建構函式建立
PDFOutputOptionsSpec物件。 - 透過指派字串值來設定File URI選項,該字串值指定輸出服務產生給
PDFOutputOptionsSpec物件的fileURI資料成員的PDF檔案位置。 檔案URI選項是相對於主控AEM Forms的J2EE應用程式伺服器,而非使用者端電腦
- 使用物件的建構函式建立
-
設定演算執行階段選項。
- 使用物件的建構函式建立
RenderOptionsSpec物件。 - 將
PDFAConformance列舉值指派給RenderOptionsSpec物件的PDFAConformance資料成員,以設定PDFAConformance值。 例如,若要指定一致性層級A,請將PDFAConformance.A指派給此資料成員。 - 將
PDFARevisionNumber列舉值指派給RenderOptionsSpec物件的PDFARevisionNumber資料成員,以設定PDFARevisionNumber值。 將PDFARevisionNumber.Revision_1指派給此資料成員。
note note NOTE PDF/A檔案的PDF版本是1.4,無論您指定哪個值。 - 使用物件的建構函式建立
-
產生PDF/檔案。
呼叫
OutputServiceService物件的generatePDFOutput方法並傳遞下列值,以建立PDF檔案:- TransformationFormat列舉值。 若要產生PDF檔案,請指定
TransformationFormat.PDFA。 - 字串值,指定表單設計的名稱。
- 字串值,指定表單設計所在的內容根。
- 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
BLOB物件。 - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將描述檔案的產生中繼資料填入此物件。 (只有Web服務呼叫需要此引數值。) - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將結果資料填入此物件中。 (只有Web服務呼叫需要此引數值。) - 包含作業結果的
OutputResult物件。 (只有Web服務呼叫需要此引數值。)
note note NOTE 您也可以叫用 OutputClient物件的generatePDFOutput2方法來建立PDF/A檔案。 (請參閱將Content Services (已過時)中的檔案傳遞至輸出服務。) - TransformationFormat列舉值。 若要產生PDF檔案,請指定
-
擷取作業的結果。
- 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表包含結果資料之XML檔案位置的字串值。 確認副檔名為.xml。 - 建立位元組陣列,以儲存
BLOB物件的資料內容,該物件是以OutputServiceService物件的generatePDFOutput方法(第八個引數)填入的結果資料。 取得BLOB物件的MTOM欄位值,以填入位元組陣列。 - 透過叫用它的建構函式並傳遞
System.IO.FileStream物件來建立System.IO.BinaryWriter物件。 - 呼叫
System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入XML檔案。
- 建立
另請參閱
將Content Services中的檔案傳遞(已棄用)至Output Service passing-documents-located-in-content-services-deprecated-to-the-output-service
Output服務會根據通常儲存為XDP檔案並在Designer中建立的表單設計,轉譯非互動式PDF表單。 您可以將包含表單設計的com.adobe.idp.Document物件傳遞至Output服務。 然後Output服務會轉譯com.adobe.idp.Document物件中的表單設計。
將com.adobe.idp.Document物件傳遞至輸出服務的好處是,其他AEM Forms服務作業會傳回com.adobe.idp.Document執行個體。 也就是說,您可以從另一個服務作業取得com.adobe.idp.Document執行個體並加以轉譯。 例如,假設XDP檔案儲存在名為/Company Home/Form Designs的Content Services (已過時)節點中,如下圖所示。
您可以程式設計方式從Content Services (已棄用)擷取Loan.xdp,並將XDP檔案傳遞至com.adobe.idp.Document物件中的Output服務。
步驟摘要 summary_of_steps-2
若要將從Content Services取得的檔案(已棄用)傳遞至Output服務,請執行下列工作:
- 包含專案檔案。
- 建立輸出和Document Management Client API物件。
- 從內容服務擷取表單設計(已棄用)。
- 轉譯非互動式PDF表單。
- 對資料流執行動作。
包含專案檔
將必要的檔案納入您的開發專案中。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立輸出和Document Management Client API物件
在您以程式設計方式執行輸出服務API作業之前,請先建立輸出使用者端API物件。 此外,由於此工作流程會從內容服務中擷取XDP檔案(已棄用),請建立檔案管理API物件。
從內容服務擷取表單設計(已棄用)
使用Java或網站服務API從內容服務擷取XDP檔案(已棄用)。 XDP檔案是在com.adobe.idp.Document執行個體中傳回(如果您使用Web服務,則是BLOB執行個體)。 然後您可以將com.adobe.idp.Document執行個體傳遞至輸出服務。
轉譯非互動式PDF表單
若要呈現非互動式表單,請將從Content Services (已棄用)傳回的com.adobe.idp.Document執行個體傳遞至Output服務。
generatePDFOutput2和g eneratePrintedOutput2的兩個新方法接受包含表單設計的com.adobe.idp.Document物件。 您也可以在傳送列印資料流至網路印表機時,將包含表單設計的com.adobe.idp.Document傳送至Output服務。使用表單資料流執行動作
您可以將非互動式表單儲存為PDF檔案。 您可以在Adobe Reader或Acrobat中檢視表單。
另請參閱
使用Java API將檔案傳遞至Output Service pass-documents-to-the-output-service-using-the-java-api
使用輸出服務與內容服務(已棄用) API (Java),傳遞從內容服務(已棄用)擷取的檔案:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar和adobe-contentservices-client.jar。
-
建立輸出和Document Management Client API物件。
- 建立包含連線屬性的
ServiceClientFactory物件。 (請參閱設定連線屬性。) - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立DocumentManagementServiceClientImpl物件。
- 建立包含連線屬性的
-
從內容服務擷取表單設計(已棄用)。
叫用
DocumentManagementServiceClientImpl物件的retrieveContent方法,並傳遞下列值:- 字串值,指定新增內容的存放區。 預設存放區為
SpacesStore。 此值為必要引數。 - 字串值,指定要擷取之內容的完整路徑(例如
/Company Home/Form Designs/Loan.xdp)。 此值為必要引數。 - 字串值,指定版本。 此值是選用引數,您可以傳遞空字串。 在此情況下,會擷取最新版本。
retrieveContent方法傳回包含XDP檔案的CRCResult物件。 透過叫用CRCResult物件的getDocument方法擷取com.adobe.idp.Document執行個體。 - 字串值,指定新增內容的存放區。 預設存放區為
-
轉譯非互動式PDF表單。
叫用
OutputClient物件的generatePDFOutput2方法,並傳遞下列值:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定影像等其他資源所在的內容根目錄。
- 代表表單設計的
com.adobe.idp.Document物件(使用CRCResult物件的getDocument方法傳回的執行個體)。 - 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
com.adobe.idp.Document物件。
generatePDFOutput2方法傳回包含作業結果的OutputResult物件。 -
使用表單資料流執行動作。
- 叫用
OutputResult物件的getGeneratedDoc方法,擷取代表非互動式表單的com.adobe.idp.Document物件。 - 建立包含作業結果的
java.io.File物件。 確認副檔名為.pdf。 - 叫用
com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案(請確定您使用的是getGeneratedDoc方法傳回的com.adobe.idp.Document物件)。
- 叫用
另請參閱
快速入門(EJB模式):使用Java API將檔案傳遞至「輸出服務」
使用網站服務API將檔案傳遞至輸出服務 pass-documents-to-the-output-service-using-the-web-service-api
使用輸出服務與內容服務(已棄用) API (網頁服務),傳遞從內容服務(已棄用)擷取的檔案:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 由於此使用者端應用程式會叫用兩個AEM Forms服務,請建立兩個服務參考。 使用下列WSDL定義作為與輸出服務相關聯的服務參考:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1。使用下列WSDL定義作為與Document Management服務相關聯的服務參考:
http://localhost:8080/soap/services/DocumentManagementService?WSDL&lc_version=9.0.1。因為
BLOB資料型別是兩個服務參考的共同型別,使用它時,請完全限定BLOB資料型別。 在對應的Web服務快速入門中,所有BLOB執行個體都是完全合格的。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立輸出和Document Management Client API物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。) -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給欄位
OutputServiceClient.ClientCredentials.UserName.UserName。 - 將對應的密碼值指派給欄位
OutputServiceClient.ClientCredentials.UserName.Password。 - 將常數值
HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType。
- 將AEM表單使用者名稱指派給欄位
-
將常數值
BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode。
note note NOTE 對 DocumentManagementServiceClient服務使用者端重複這些步驟。 -
-
從內容服務擷取表單設計(已棄用)。
叫用
DocumentManagementServiceClient物件的retrieveContent方法並傳遞下列值以擷取內容:- 字串值,指定新增內容的存放區。 預設存放區為
SpacesStore。 此值為必要引數。 - 字串值,指定要擷取之內容的完整路徑(例如
/Company Home/Form Designs/Loan.xdp)。 此值為必要引數。 - 字串值,指定版本。 此值是選用引數,您可以傳遞空字串。 在此情況下,會擷取最新版本。
- 儲存瀏覽連結值的字串輸出引數。
- 儲存內容的
BLOB輸出引數。 您可以使用此輸出引數來擷取內容。 - 儲存內容屬性的
ServiceReference1.MyMapOf_xsd_string_To_xsd_anyType輸出引數。 CRCResult輸出引數。 您可以使用BLOB輸出引數來擷取內容,而不使用此物件。
- 字串值,指定新增內容的存放區。 預設存放區為
-
轉譯非互動式PDF表單。
叫用
OutputServiceClient物件的generatePDFOutput2方法,並傳遞下列值:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定影像等其他資源所在的內容根目錄。
- 代表表單設計的
BLOB物件(使用內容服務傳回的BLOB執行個體(已棄用)。 - 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
BLOB物件。 - 由
generatePDFOutput2方法填入的輸出BLOB物件。generatePDFOutput2方法會將描述檔案的產生中繼資料填入此物件。 (只有Web服務呼叫才需要此引數值)。 - 包含作業結果的輸出
OutputResult物件。 (只有Web服務呼叫才需要此引數值)。
generatePDFOutput2方法傳回包含非互動式PDF表單的BLOB物件。 -
使用表單資料流執行動作。
- 透過叫用它的建構函式來建立
System.IO.FileStream物件。 傳遞代表互動式PDF檔案檔案位置及開啟檔案模式的字串值。 - 建立位元組陣列,儲存從
generatePDFOutput2方法擷取的BLOB物件的內容。 取得BLOB物件的MTOM資料成員的值,以填入位元組陣列。 - 透過叫用它的建構函式並傳遞
System.IO.FileStream物件來建立System.IO.BinaryWriter物件。 - 呼叫
System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。
- 透過叫用它的建構函式來建立
另請參閱
將存放庫中的檔案傳遞至輸出服務 passing-documents-located-in-the-repository-to-the-output-service
Output服務會根據通常儲存為XDP檔案並在Designer中建立的表單設計,轉譯非互動式PDF表單。 您可以將包含表單設計的com.adobe.idp.Document物件傳遞至Output服務。 然後Output服務會轉譯com.adobe.idp.Document物件中的表單設計。
將com.adobe.idp.Document物件傳遞至輸出服務的好處是,其他AEM Forms服務作業會傳回com.adobe.idp.Document執行個體。 也就是說,您可以從另一個服務作業取得com.adobe.idp.Document執行個體並加以轉譯。 例如,假設XDP檔案儲存在AEM Forms存放庫中,如下圖所示。
FormsFolder 資料夾是AEM Forms存放庫中的使用者定義位置(此位置為範例,預設不存在)。 在此範例中,名為Loan.xdp的表單設計位於此資料夾中。 除了表單設計之外,其他表單附屬資料(例如影像)也可以儲存在此位置。 AEM Forms存放庫中的資源路徑為:
Applications/Application-name/Application-version/Folder.../Filename
您可以程式設計方式從AEM Forms存放庫擷取Loan.xdp,並將其傳遞至com.adobe.idp.Document物件中的輸出服務。
您可以使用兩種方式之一,根據存放庫中的XDP檔案建立PDF。 您可以傳遞參考的XDP位置,或以程式設計方式從存放庫擷取XDP,並將其傳遞到XDP檔案中的輸出服務。
快速入門(EJB模式):使用Java API根據應用程式XDP檔案建立PDF檔案(顯示如何傳遞XDP檔案的位置,以供參考)。
快速入門(EJB模式):使用Java API將AEM Forms存放庫中的檔案傳遞至輸出服務 (顯示如何以程式設計方式從AEM Forms存放庫擷取XDP檔案,並將其傳遞至com.adobe.idp.Document執行個體中的輸出服務)。 (本節將討論如何執行此工作)
步驟摘要 summary_of_steps-3
若要將從AEM Forms存放庫取得的檔案傳遞至輸出服務,請執行以下工作:
- 包含專案檔案。
- 建立輸出和Document Management Client API物件。
- 從AEM Forms存放庫擷取表單設計。
- 轉譯非互動式PDF表單。
- 對資料流執行動作。
包含專案檔
將必要的檔案納入您的開發專案中。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請包含Proxy檔案。
建立輸出和Document Management Client API物件
在您以程式設計方式執行輸出服務API作業之前,請先建立輸出使用者端API物件。 此外,由於此工作流程會從內容服務中擷取XDP檔案(已棄用),請建立檔案管理API物件。
從AEM Forms存放庫擷取表單設計
使用存放庫API從AEM Forms存放庫擷取XDP檔案。 (請參閱讀取資源。)
XDP檔案是在com.adobe.idp.Document執行個體中傳回(如果您使用Web服務,則是BLOB執行個體)。 然後您可以將com.adobe.idp.Document執行個體傳遞至Output服務。
轉譯非互動式PDF表單
若要呈現非互動式表單,請傳遞使用AEM Forms存放庫API傳回的com.adobe.idp.Document執行個體。
generatePDFOutput2和generatePrintedOutput2的兩個新方法接受包含表單設計的com.adobe.idp.Document物件。 您也可以在傳送列印資料流至網路印表機時,將包含表單設計的com.adobe.idp.Document傳送至輸出服務。使用表單資料流執行動作
您可以將非互動式表單儲存為PDF檔案。 您可以在Adobe Reader或Acrobat中檢視表單。
另請參閱
ResourceRepositoryClient
使用Java API將存放庫中的檔案傳遞至輸出服務 pass-documents-located-in-the-repository-to-the-output-service-using-the-java-api
使用輸出服務和存放庫API (Java)傳遞從存放庫擷取的檔案:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar和adobe-repository-client.jar。
-
建立輸出和Document Management Client API物件。
- 建立包含連線屬性的
ServiceClientFactory物件。 (請參閱設定連線屬性。) - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立DocumentManagementServiceClientImpl物件。
- 建立包含連線屬性的
-
從AEM Forms存放庫擷取表單設計。
叫用
ResourceRepositoryClient物件的readResourceContent方法,並將指定URI位置的字串值傳遞給XDP檔案。 例如/Applications/FormsApplication/1.0/FormsFolder/Loan.xdp。此值為必填。 此方法會傳回代表XDP檔案的com.adobe.idp.Document執行個體。 -
轉譯非互動式PDF表單。
叫用
OutputClient物件的generatePDFOutput2方法,並傳遞下列值:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定影像等其他資源所在的內容根目錄。 例如,
repository:///Applications/FormsApplication/1.0/FormsFolder/。 - 代表表單設計的
com.adobe.idp.Document物件(使用ResourceRepositoryClient物件的readResourceContent方法傳回的執行個體)。 - 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
com.adobe.idp.Document物件。
generatePDFOutput2方法傳回包含作業結果的OutputResult物件。 -
使用表單資料流執行動作。
- 叫用
OutputResult物件的getGeneratedDoc方法,擷取代表非互動式表單的com.adobe.idp.Document物件。 - 建立包含作業結果的
java.io.File物件。 確認副檔名為.pdf。 - 叫用
com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案(請確定您使用的是getGeneratedDoc方法傳回的com.adobe.idp.Document物件)。
- 叫用
另請參閱
使用片段建立PDF檔案 creating-pdf-documents-using-fragments
您可以使用輸出和組合器服務來建立以片段為基礎的輸出資料流,例如PDF檔案。 組合器服務會根據多個XDP檔案中的片段來組合XDP檔案。 組裝的XDP檔案會傳遞給Output服務,該服務會建立PDF檔案。 雖然此工作流程會顯示正在產生的PDF檔案,但「輸出」服務可以為此工作流程產生其他輸出型別,例如ZPL。 PDF檔案僅供討論之用。
下圖顯示此工作流程。
在讀取 使用片段 建立PDF檔案之前,建議您熟悉使用組合器服務來組合多個XDP檔案。 (請參閱組合多個XDP片段。)
步驟摘要 summary_of_steps-4
若要根據片段建立PDF檔案,請執行下列步驟:
- 包含專案檔案。
- 建立Output and Assembler Client物件。
- 使用Assembler服務產生表單設計。
- 使用Output服務產生PDF檔案。
- 將PDF檔案儲存為PDF檔案。
包含專案檔
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請務必包含Proxy檔案。
建立輸出和組合器使用者端物件
在您以程式設計方式執行輸出服務API作業之前,請先建立輸出使用者端API物件。 此外,由於此工作流程會叫用Assembler服務來建立表單設計,因此請建立Assembler使用者端API物件。
使用Assembler服務產生表單設計
使用Assembler服務產生使用片段的表單設計。 組合器服務傳回包含表單設計的com.adobe.idp.Document執行個體。
使用Output服務產生PDF檔案
您可以使用Output服務,使用Assembler服務建立的表單設計來產生PDF檔案。 傳遞組合器服務傳回至輸出服務的com.adobe.idp.Document執行個體。
將PDF檔案儲存為PDF檔案
在Output服務產生PDF檔案後,您可以將其儲存為PDF檔案。
另請參閱
使用Java API根據片段建立PDF檔案 create-a-pdf-document-based-on-fragments-using-the-java-api
使用輸出服務API和組合器服務API (Java),根據片段建立PDF檔案:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar。
-
建立Output and Assembler Client物件。
- 建立包含連線屬性的
ServiceClientFactory物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立AssemblerServiceClient物件。
- 建立包含連線屬性的
-
使用Assembler服務產生表單設計。
叫用
AssemblerServiceClient物件的invokeDDX方法,並傳遞下列必要值:- 代表要使用的DDX檔案的
com.adobe.idp.Document物件。 - 包含輸入XDP檔案的
java.util.Map物件。 - 指定執行階段選項(包括預設字型和作業記錄層級)的
com.adobe.livecycle.assembler.client.AssemblerOptionSpec物件。
invokeDDX方法傳回包含組合XDP檔案的com.adobe.livecycle.assembler.client.AssemblerResult物件。 若要擷取組裝的XDP檔案,請執行下列動作:- 叫用
AssemblerResult物件的getDocuments方法。 此方法會傳回java.util.Map物件。 - 逐一檢視
java.util.Map物件,直到找到結果com.adobe.idp.Document物件為止。 - 叫用
com.adobe.idp.Document物件的copyToFile方法以擷取組合的XDP檔案。
- 代表要使用的DDX檔案的
-
使用Output服務產生PDF檔案。
叫用
OutputClient物件的generatePDFOutput2方法,並傳遞下列值:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF- 字串值,指定其他資源(例如影像)所在的內容根
- 代表表單設計的
com.adobe.idp.Document物件(使用Assembler服務傳回的執行個體) - 包含PDF執行階段選項的
PDFOutputOptionsSpec物件 - 包含演算執行階段選項的
RenderOptionsSpec物件 - 包含要與表單設計合併之資料的XML資料來源的
com.adobe.idp.Document物件
generatePDFOutput2方法傳回包含作業結果的OutputResult物件 -
將PDF檔案儲存為PDF檔案。
- 透過叫用
OutputResult物件的getGeneratedDoc方法,擷取代表PDF檔案的com.adobe.idp.Document物件。 - 建立包含作業結果的
java.io.File物件。 請確認副檔名為.pdf。 - 叫用
com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案。 (請確定您使用的是getGeneratedDoc方法傳回的com.adobe.idp.Document物件。)
- 透過叫用
另請參閱
快速入門(EJB模式):使用Java API根據片段建立PDF檔案
使用Web服務API根據片段建立PDF檔案 create-a-pdf-document-based-on-fragments-using-the-web-service-api
使用輸出服務API和組合器服務API (Web服務),根據片段建立PDF檔案:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 針對與Output服務相關的服務參考,使用下列WSDL定義:
code language-java http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1.針對與Assembler服務相關的服務參考,使用下列WSDL定義:
code language-java http://localhost:8080/soap/services/AssemblerService?WSDL&lc_version=9.0.1.因為
BLOB資料型別是兩個服務參考的共同型別,使用它時,請完全限定BLOB資料型別。 在對應的Web服務快速入門中,所有BLOB執行個體都是完全合格的。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立Output and Assembler Client物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至AEM Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。 但是,請指定?blob=mtom以使用MTOM。 -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給
OutputServiceClient.ClientCredentials.UserName.UserName欄位。 - 將對應的密碼值指派給
OutputServiceClient.ClientCredentials.UserName.Password欄位。 - 將常數值
HttpClientCredentialType.Basic指派給BasicHttpBindingSecurity.Transport.ClientCredentialType欄位。
- 將AEM表單使用者名稱指派給
-
將
BasicHttpSecurityMode.TransportCredentialOnly常數值指派給BasicHttpBindingSecurity.Security.Mode欄位。
note note NOTE 對 AssemblerServiceClient物件重複這些步驟。 -
-
使用Assembler服務產生表單設計。
叫用
AssemblerServiceClient物件的invokeDDX方法,並傳遞下列值:- 代表DDX檔案的
BLOB物件 - 包含必要檔案的
MyMapOf_xsd_string_To_xsd_anyType物件 - 指定執行階段選項的
AssemblerOptionSpec物件
invokeDDX方法傳回AssemblerResult物件,其中包含工作的結果和發生的任何例外狀況。 若要取得新建立的XDP檔案,請執行下列動作:- 存取
AssemblerResult物件的documents欄位,這是包含結果PDF檔案的Map物件。 - 反複檢查
Map物件以擷取組合表單設計。 將該陣列成員的value轉換為BLOB。 將此BLOB執行個體傳遞至輸出服務。
- 代表DDX檔案的
-
使用Output服務產生PDF檔案。
叫用
OutputServiceClient物件的generatePDFOutput2方法,並傳遞下列值:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定其他資源(例如影像)所在的內容根目錄。
- 代表表單設計的
BLOB物件(使用組合器服務傳回的BLOB執行個體)。 - 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
BLOB物件。 generatePDFOutput2方法填入的輸出BLOB物件。generatePDFOutput2方法會將描述檔案的產生中繼資料填入此物件。 (只有Web服務呼叫才需要此引數值)。- 包含作業結果的輸出
OutputResult物件。 (只有Web服務呼叫才需要此引數值)。
generatePDFOutput2方法傳回包含非互動式PDF表單的BLOB物件。 -
將PDF檔案儲存為PDF檔案。
- 透過叫用它的建構函式來建立
System.IO.FileStream物件。 傳遞代表互動式PDF檔案檔案位置及開啟檔案模式的字串值。 - 建立位元組陣列,儲存從
generatePDFOutput2方法擷取的BLOB物件的內容。 取得BLOB物件的MTOM資料成員的值,以填入位元組陣列。 - 透過叫用它的建構函式並傳遞
System.IO.FileStream物件來建立System.IO.BinaryWriter物件。 - 呼叫
System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。
- 透過叫用它的建構函式來建立
另請參閱
列印至檔案 printing-to-files
您可以使用Output服務將如PostScript、印表機控制語言(PCL)或下列標籤格式等串流列印到檔案中:
- 斑馬 — ZPL
- Intermec - IPL
- Datamax - DPL
- TecToshiba - TPCL
使用Output服務,您可以將XML資料與表單設計合併,並將表單列印到檔案中。 下圖顯示建立雷射和標籤檔案的「輸出」服務。
步驟摘要 summary_of_steps-5
若要列印至檔案,請執行下列步驟:
- 包含專案檔案。
- 建立輸出使用者端物件。
- 參考XML資料來源。
- 設定列印至檔案所需的列印執行階段選項。
- 將列印資料流列印到檔案。
- 擷取作業的結果。
包含專案檔
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請務必包含Proxy檔案。
必須將下列JAR檔案新增至專案的類別路徑:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-output-client.jar
- adobe-utilities.jar (如果AEM Forms部署在JBoss上,則為必要)
- jbossall-client.jar (如果AEM Forms部署在JBoss上,則為必要)
如果將AEM Forms部署在受支援的J2EE應用程式伺服器(不是JBoss)上,則必須將adobe-utilities.jar和jbossall-client.jar檔案取代為特定於AEM Forms部署所在之J2EE應用程式伺服器的JAR檔案。 (請參閱包含AEM Forms Java程式庫檔案。)
建立輸出使用者端物件
您必須先建立輸出服務使用者端物件,才能以程式設計方式執行輸出服務作業。 如果您使用Java API,請建立OutputClient物件。 如果您使用輸出Web服務API,請建立OutputServiceService物件。
參考XML資料來源
若要列印包含資料的檔案,您必須針對每個要填入資料的表單欄位,參考包含XML元素的XML資料來源。 XML元素名稱必須符合欄位名稱。 如果XML元素未對應至表單欄位,或XML元素名稱不符合欄位名稱,則會忽略該元素。 如果已指定所有XML元素,則不必比對XML元素的顯示順序。
設定列印至檔案所需的列印執行階段選項
若要列印至檔案,您必須指定輸出服務列印之檔案的位置和名稱,以設定檔案URI執行時間選項。 例如,若要指示輸出服務將名為 MortgageForm.ps 的PostScript檔案列印至C:\Adobe,請指定C:\Adobe\MortgageForm.ps。
PrintedOutputOptionsSpec類別參考。將列印資料流列印到檔案
在參照包含表單資料的有效XML資料來源並設定列印執行階段選項後,您可以叫用Output服務,使其列印檔案。
擷取作業的結果
Output服務執行作業之後,會傳回指定作業是否成功的各種資料專案,例如XML資料。
另請參閱
使用Java API列印至檔案 print-to-files-using-the-java-api
使用Output API (Java)列印至檔案:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar。
-
建立輸出使用者端物件。
- 建立包含連線屬性的
ServiceClientFactory物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。
- 建立包含連線屬性的
-
參考XML資料來源。
- 使用檔案的建構函式,並傳遞指定XML檔案位置的字串值,建立代表用來填入檔案的XML資料來源的
java.io.FileInputStream物件。 - 使用它的建構函式並傳遞
java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
- 使用檔案的建構函式,並傳遞指定XML檔案位置的字串值,建立代表用來填入檔案的XML資料來源的
-
設定列印至檔案所需的列印執行階段選項。
- 使用物件的建構函式建立
PrintedOutputOptionsSpec物件。 - 透過叫用PrintedOutputOptionsSpec物件的
setFileURI方法並傳遞代表檔案名稱和位置的字串值來指定檔案。 例如,如果您希望輸出服務列印至C:\Adobe中名為MortgageForm.ps的PostScript檔案,請指定C:\Adobe\MortgageForm.ps。 - 透過叫用
PrintedOutputOptionsSpec物件的setCopies方法並傳遞代表復本數的整數值來指定要列印的復本數。
- 使用物件的建構函式建立
-
將列印資料流列印到檔案。
透過叫用
OutputClient物件的generatePrintedOutput方法並傳遞下列值來列印至檔案:- 指定要建立之列印資料流格式的
PrintFormat列舉值。 例如,若要建立PostScript列印資料流,請傳遞PrintFormat.PostScript。 - 字串值,指定表單設計的名稱。
- 字串值,指定相關附屬檔案(例如影像檔案)的位置。
- 字串值,指定要使用的XDC檔案位置(如果您使用
PrintedOutputOptionsSpec物件指定要使用的XDC檔案,則可以傳遞null)。 - 包含列印至檔案所需的執行階段選項的
PrintedOutputOptionsSpec物件。 - 包含包含表單資料之XML資料來源的
com.adobe.idp.Document物件。
generatePrintedOutput方法傳回包含作業結果的OutputResult物件。note note NOTE OutputResult物件的getRecordLevelMetaDataList方法傳回null。 - 指定要建立之列印資料流格式的
-
擷取作業的結果。
- 呼叫
OutputResult物件的getStatusDoc方法,建立代表generatePrintedOutput方法狀態的com.adobe.idp.Document物件(generatePrintedOutput方法傳回OutputResult物件)。 - 建立將包含作業結果的
java.io.File物件。 確認副檔名為XML。 - 叫用
com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案(請確定您使用的是getStatusDoc方法傳回的com.adobe.idp.Document物件)。
- 呼叫
另請參閱
使用Web服務API列印至檔案 print-to-files-using-the-web-service-api
使用Output API (Web服務)列印至檔案:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立輸出使用者端物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至AEM Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。 但是,請指定?blob=mtom以使用MTOM。 -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給欄位
OutputServiceClient.ClientCredentials.UserName.UserName。 - 將對應的密碼值指派給欄位
OutputServiceClient.ClientCredentials.UserName.Password。 - 將常數值
HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType。 - 將常數值
BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode。
- 將AEM表單使用者名稱指派給欄位
-
-
參考XML資料來源。
- 使用物件的建構函式建立
BLOB物件。BLOB物件是用來儲存表單資料。 - 建立
System.IO.FileStream物件,方法是叫用其建構函式,並傳遞字串值,指定包含表單資料的XML檔案位置。 - 建立位元組陣列以儲存
System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。 - 呼叫
System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。 - 以位元組陣列的內容指派物件的
binaryData屬性,填入BLOB物件。
- 使用物件的建構函式建立
-
設定列印至檔案所需的列印執行階段選項。
- 使用物件的建構函式建立
PrintedOutputOptionsSpec物件。 - 指定字串值來指定檔案,該字串值代表
PrintedOutputOptionsSpec物件之fileURI資料成員的檔案位置和名稱。 例如,如果您希望輸出服務列印至C:\Adobe中名為 MortgageForm.ps 的PostScript檔案,請指定C:\Adobe\MortgageForm.ps。 - 指定整數值來指定要列印的份數,整數值代表
PrintedOutputOptionsSpec物件的copies個資料成員的份數。
- 使用物件的建構函式建立
-
將列印資料流列印到檔案。
透過叫用
OutputServiceService物件的generatePrintedOutput方法並傳遞下列值來列印至檔案:- 指定要建立之列印資料流格式的
PrintFormat列舉值。 例如,若要建立PostScript列印資料流,請傳遞PrintFormat.PostScript。 - 字串值,指定表單設計的名稱。
- 字串值,指定相關附屬檔案(例如影像檔案)的位置。
- 字串值,指定要使用的XDC檔案位置(如果您使用
PrintedOutputOptionsSpec物件指定要使用的XDC檔案,則可以傳遞null)。 - 包含列印至檔案所需的列印執行階段選項的
PrintedOutputOptionsSpec物件。 - 包含包含表單資料之XML資料來源的
BLOB物件。 - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將描述檔案的產生中繼資料填入此物件。 (只有Web服務呼叫需要此引數值。) - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將結果資料填入此物件中。 (只有Web服務呼叫需要此引數值。) - 包含作業結果的
OutputResult物件。 (只有Web服務呼叫需要此引數值。)
- 指定要建立之列印資料流格式的
-
擷取作業的結果。
- 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表包含結果資料之XML檔案位置的字串值。 確認副檔名為XML。 - 建立位元組陣列,以儲存
BLOB物件的資料內容,該物件是以OutputServiceService物件的generatePDFOutput方法(第八個引數)填入的結果資料。 取得BLOB物件的MTOM資料成員的值,以填入位元組陣列。 - 透過叫用它的建構函式並傳遞
System.IO.FileStream物件來建立System.IO.BinaryWriter物件。 - 呼叫
System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入XML檔案。
- 建立
另請參閱
傳送列印資料流至印表機 sending-print-streams-to-printers
您可以使用Output服務將列印資料流(例如PostScript、印表機控制語言(PCL)或下列標籤格式)傳送至網路印表機:
- 斑馬 — ZPL
- Intermec - IPL
- Datamax - DPL
- TecToshiba - TPCL
使用Output服務,您可以將XML資料與表單設計合併,並將表單輸出為列印資料流。 例如,您可以建立PostScript列印資料流,並將其傳送至網路印表機。 下圖顯示Output服務傳送列印資料流至網路印表機。
步驟摘要 summary_of_steps-6
若要將列印資料流傳送至網路印表機,請執行下列步驟:
- 包含專案檔案。
- 建立輸出使用者端物件。
- 參考XML資料來源。
- 設定列印執行階段選項
- 擷取要列印的檔案。
- 將檔案傳送至網路印表機。
包含專案檔
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請務必包含Proxy檔案。
必須將下列JAR檔案新增至專案的類別路徑:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-output-client.jar
- adobe-utilities.jar (如果AEM Forms部署在JBoss上,則為必要)
- jbossall-client.jar (如果AEM Forms部署在JBoss上,則為必要)
如果將AEM Forms部署在受支援的J2EE應用程式伺服器(不是JBoss)上,則必須將adobe-utilities.jar和jbossall-client.jar檔案取代為特定於AEM Forms部署所在之J2EE應用程式伺服器的JAR檔案。
建立輸出使用者端物件
在您以程式設計方式執行輸出服務作業之前,請先建立輸出服務使用者端物件。 如果您使用Java API,請建立OutputClient物件。 如果您使用輸出Web服務API,請建立OutputServiceClient物件。
參考XML資料來源
若要列印包含資料的檔案,您必須針對每個要填入資料的表單欄位,參考包含XML元素的XML資料來源。 XML元素名稱必須符合欄位名稱。 如果XML元素未對應至表單欄位,或XML元素名稱不符合欄位名稱,則會忽略該元素。 如果已指定所有XML元素,則不必比對XML元素的顯示順序。
設定列印執行階段選項
當傳送列印資料流至印表機時,您可以設定執行階段選項,包括下列選項:
- 份數:指定要傳送至印表機的份數。 預設值為 1。
- 裝訂:使用裝訂器時會設定XCI選項。 此選項可由裝訂元素在組態模型中指定,並且僅用於PS和PCL印表機。
- OutputJog:當輸出頁面應該以角拐方式移動(實際在輸出匣中移動)時,會設定XCI選項。 此選項僅適用於PS和PCL印表機。
- OutputBin:用來啟用列印驅動程式以選取適當輸出紙匣的XCI值。
PrintedOutputOptionsSpec類別參考。擷取要列印的檔案
擷取列印資料流以傳送至印表機。 例如,您可以擷取PostScript檔案,並將其傳送至印表機。
如果您的印表機支援PDF,您可以選擇傳送PDF檔案。 但是,將PDF檔案傳送至印表機的問題是每個印表機製造商都有不同的PDF解譯器實作。 也就是說,有些列印製造商會使用Adobe PDF的解讀,但這取決於印表機。 其他印表機有自己的PDF解譯器。 因此,列印結果可能會有所不同。
傳送PDF檔案至印表機的另一個限制是它只會列印;它無法存取雙面列印、紙匣選擇和裝訂,除非透過印表機的設定。
若要擷取要列印的檔案,請使用generatePrintedOutput方法。 下表指定在使用generatePrintedOutput方法時,為指定列印資料流設定的內容型別。
generatePrintedOutput2方法將列印資料流傳送至印表機。 不過,與「傳送列印資料流至印表機」區段相關的快速啟動會使用generatePrintedOutput方法。傳送列印資料流至網路印表機
擷取要列印的檔案後,您可以叫用「輸出」服務,使其將列印資料流傳送至網路印表機。 若要讓「輸出」服務成功找到印表機,您必須同時指定列印伺服器和印表機名稱。 此外,您也必須指定列印通訊協定。
使用輸出API (Java)將列印資料流傳送至網路印表機:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar。
-
建立輸出使用者端物件
- 建立包含連線屬性的
ServiceClientFactory物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。
- 建立包含連線屬性的
-
參考XML資料來源
- 使用檔案的建構函式,並傳遞指定XML檔案位置的字串值,建立代表用來填入檔案的XML資料來源的
java.io.FileInputStream物件。 - 使用它的建構函式並傳遞
java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
- 使用檔案的建構函式,並傳遞指定XML檔案位置的字串值,建立代表用來填入檔案的XML資料來源的
-
設定列印執行階段選項
建立代表列印執行階段選項的
PrintedOutputOptionsSpec物件。 例如,您可以透過叫用PrintedOutputOptionsSpec物件的setCopies方法來指定要列印的份數。note note NOTE 如果您正在產生ZPL列印資料流,就無法使用 PrintedOutputOptionsSpec物件的setPagination方法來設定分頁值。 同樣地,您無法為ZPL列印資料流設定下列選項:OutputJog、PageOffset和Staple。setPagination方法對於PostScript產生無效。 它只適用於PCL產生。 -
擷取要列印的檔案
-
叫用
OutputClient物件的generatePrintedOutput方法並傳遞下列值,以擷取要列印的檔案:- 指定列印資料流的
PrintFormat列舉值。 例如,若要建立PostScript列印資料流,請傳遞PrintFormat.PostScript。 - 字串值,指定表單設計的名稱。
- 字串值,指定相關附屬檔案(例如影像檔案)的位置。
- 字串值,指定要使用的XDC檔案位置。
- 包含列印至檔案所需之執行階段選項的
PrintedOutputOptionsSpec物件。 com.adobe.idp.Document物件,代表包含要與表單設計合併之表單資料的XML資料來源。
此方法會傳回包含作業結果的
OutputResult物件。 - 指定列印資料流的
-
呼叫
OutputResult物件的getGeneratedDoc方法,建立要傳送到印表機的com.adobe.idp.Document物件。 此方法會傳回com.adobe.idp.Document物件。
-
-
傳送列印資料流至網路印表機
透過叫用
OutputClient物件的sendToPrinter方法並傳遞下列值,將列印資料流傳送至網路印表機:- 代表要傳送至印表機之列印資料流的
com.adobe.idp.Document物件。 - 指定要使用的印表機通訊協定的
PrinterProtocol列舉值。 例如,若要指定SharedPrinter通訊協定,請傳遞PrinterProtocol.SharedPrinter。 - 指定列印伺服器名稱的字串值。 例如,假設列印伺服器的名稱為PrintSever1,請傳遞
\\\PrintSever1。 - 字串值,指定印表機的名稱。 例如,假設印表機的名稱為Printer1,請傳遞
\\\PrintSever1\Printer1。
note note NOTE 已在8.2.1版中將 sendToPrinter方法新增至AEM Forms API。 - 代表要傳送至印表機之列印資料流的
使用網站服務API傳送列印資料流至印表機 send-a-print-stream-to-a-printer-using-the-web-service-api
使用輸出API (網頁服務)將列印資料流傳送至網路印表機:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立輸出使用者端物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至AEM Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。 但是,請指定?blob=mtom以使用MTOM。 -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給欄位
OutputServiceClient.ClientCredentials.UserName.UserName。 - 將對應的密碼值指派給欄位
OutputServiceClient.ClientCredentials.UserName.Password。 - 將常數值
HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType。 - 將常數值
BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode。
- 將AEM表單使用者名稱指派給欄位
-
-
參考XML資料來源。
- 使用物件的建構函式建立
BLOB物件。BLOB物件是用來儲存表單資料。 - 透過叫用它的建構函式來建立
System.IO.FileStream物件。 傳遞字串值,指定包含表單資料之XML檔案的位置。 - 建立位元組陣列以儲存
System.IO.FileStream物件的內容。 取得System.IO.FileStream物件的Length屬性以決定位元組陣列長度。 - 呼叫
System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。 - 以位元組陣列的內容指派其
MTOM欄位,填入BLOB物件。
- 使用物件的建構函式建立
-
設定列印執行階段選項。
使用物件的建構函式建立
PrintedOutputOptionsSpec物件。 例如,您可以指定整數值來指定要列印的份數,該值代表PrintedOutputOptionsSpec物件的copies資料成員的份數。note note NOTE 如果您正在產生ZPL列印資料流,則無法使用 PrintedOutputOptionsSpec物件的pagination資料成員來設定分頁值。 同樣地,您無法為ZPL列印資料流設定下列選項:OutputJog、PageOffset和Staple。pagination資料成員對於PostScript產生無效。 它只適用於PCL產生。 -
擷取要列印的檔案。
-
叫用
OutputServiceService物件的generatePrintedOutput方法並傳遞下列值,以擷取要列印的檔案:- 指定列印資料流的
PrintFormat列舉值。 例如,若要建立PostScript列印資料流,請傳遞PrintFormat.PostScript。 - 字串值,指定表單設計的名稱。
- 字串值,指定相關附屬檔案(例如影像檔案)的位置。
- 字串值,指定要使用的XDC檔案位置。
PrintedOutputOptionsSpec物件,其中包含傳送列印資料流至網路印表機時使用的列印執行時間選項。- 包含包含表單資料之XML資料來源的
BLOB物件。 - 由
generatePrintedOutput方法填入的BLOB物件。generatePrintedOutput方法會將描述檔案的產生中繼資料填入此物件。 (只有Web服務呼叫需要此引數值。) - 由
generatePrintedOutput方法填入的BLOB物件。generatePrintedOutput方法會將結果資料填入此物件中。 (只有Web服務呼叫需要此引數值。) - 包含作業結果的
OutputResult物件。 (只有Web服務呼叫需要此引數值。)
- 指定列印資料流的
-
取得
OutputResult物件的generatedDoc方法的值,建立要傳送至印表機的BLOB物件。 此方法傳回的BLOB物件包含generatePrintedOutput方法傳回的PostScript資料。
-
-
傳送列印資料流至網路印表機。
透過叫用
OutputClient物件的sendToPrinter方法並傳遞下列值,將列印資料流傳送至網路印表機:- 代表要傳送至印表機之列印資料流的
BLOB物件。 - 指定要使用的印表機通訊協定的
PrinterProtocol列舉值。 例如,若要指定SharedPrinter通訊協定,請傳遞PrinterProtocol.SharedPrinter。 - 指定是否要使用先前引數值的
bool值。 傳遞值true。 (只有Web服務呼叫需要此引數值。) - 指定列印伺服器名稱的字串值。 例如,假設列印伺服器的名稱為PrintSever1,請傳遞
\\\PrintSever1。 - 字串值,指定印表機的名稱。 例如,假設印表機的名稱為Printer1,請傳遞
\\\PrintSever1\Printer1。
note note NOTE 已在8.2.1版中將 sendToPrinter方法新增至AEM Forms API。 - 代表要傳送至印表機之列印資料流的
建立多個輸出檔案 creating-multiple-output-files
Output服務可以為XML資料來源內的每個記錄建立個別的檔案,或是包含所有記錄的單一檔案(此功能為預設值)。 例如,假設有10筆記錄位於XML資料來源中,您指示輸出服務使用輸出服務API為每個記錄建立個別的PDF檔案(或其他型別的輸出)。 因此,Output服務會產生十份PDF檔案。 (您可以傳送多個列印資料流至印表機,而不建立檔案。)
下圖也顯示處理包含多個記錄之XML資料檔案的輸出服務。 不過,假設您指示輸出服務建立包含所有資料記錄的單一PDF檔案。 在這種情況下,Output服務會產生一個包含所有記錄的檔案。
下圖顯示處理包含多個記錄之XML資料檔案的輸出服務。 假設您指示輸出服務為每個資料記錄建立個別的PDF檔案。 在這種情況下,Output服務會為每個資料記錄產生個別的PDF檔案。
下列XML資料顯示包含三個資料記錄的資料檔案範例。
<?xml version="1.0" encoding="UTF-8"?>
<batch>
<LoanRecord>
<mortgageAmount>500000</mortgageAmount>
<lastName>Blue</lastName>
<firstName>Tony</firstName>
<SSN>555666777</SSN>
<PositionTitle>Product Manager</PositionTitle>
<Address>555 No Where Dr</Address>
<City>New York</City>
<StateProv>New York</StateProv>
<ZipCode>51256</ZipCode>
<Email>TBlue@NoMailServer.com</Email>
<PhoneNum>555-7418</PhoneNum>
<FaxNum>555-9981</FaxNum>
<Description>Buy a home</Description>
</LoanRecord>
<LoanRecord>
<mortgageAmount>300000</mortgageAmount>
<lastName>White</lastName>
<firstName>Sam</firstName>
<SSN>555666222</SSN>
<PositionTitle>Program Manager</PositionTitle>
<Address>557 No Where Dr</Address>
<City>New York</City>
<StateProv>New York</StateProv>
<ZipCode>51256</ZipCode>
<Email>SWhite@NoMailServer.com</Email>
<PhoneNum>555-7445</PhoneNum>
<FaxNum>555-9986</FaxNum>
<Description>Buy a home</Description>
</LoanRecord>
<LoanRecord>
<mortgageAmount>700000</mortgageAmount>
<lastName>Green</lastName>
<firstName>Steve</firstName>
<SSN>55566688</SSN>
<PositionTitle>Project Manager</PositionTitle>
<Address>445 No Where Dr</Address>
<City>New York</City>
<StateProv>New York</StateProv>
<ZipCode>51256</ZipCode>
<Email>SGreeb@NoMailServer.com</Email>
<PhoneNum>555-2211</PhoneNum>
<FaxNum>555-2221</FaxNum>
<Description>Buy a home</Description>
</LoanRecord>
</batch>
請注意,每個資料記錄開始和結束的XML元素是LoanRecord。 產生多個檔案的應用程式邏輯會參考此XML元素。
步驟摘要 summary_of_steps-7
若要根據XML資料來源建立多個PDF檔案,請執行下列步驟:
- 包含專案檔案。
- 建立輸出使用者端物件。
- 參考XML資料來源。
- 設定PDF執行階段選項。
- 設定演算執行階段選項。
- 產生多個PDF檔案。
- 擷取作業的結果。
包含專案檔
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請務必包含Proxy檔案。
必須將下列JAR檔案新增至專案的類別路徑:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-output-client.jar
- adobe-utilities.jar (如果AEM Forms部署在JBoss上,則為必要)
- jbossall-client.jar (如果AEM Forms部署在JBoss上,則為必要)
如果將AEM Forms部署在受支援的J2EE應用程式伺服器(不是JBoss)上,則必須將adobe-utilities.jar和jbossall-client.jar檔案取代為特定於AEM Forms部署所在之J2EE應用程式伺服器的JAR檔案。
建立輸出使用者端物件
您必須先建立輸出服務使用者端物件,才能以程式設計方式執行輸出服務作業。 如果您使用Java API,請建立OutputClient物件。 如果您使用輸出Web服務API,請建立OutputServiceService物件。
參考XML資料來源
參考包含多個記錄的XML資料來源。 必須使用XML元素來分隔資料記錄。 例如,在本節前面顯示的範例XML資料來源中,分隔資料記錄的XML元素名為LoanRecord。
每個要填入資料的表單欄位都必須有XML元素。 XML元素名稱必須符合欄位名稱。 如果XML元素未對應至表單欄位,或XML元素名稱不符合欄位名稱,則會忽略該元素。 如果已指定所有XML元素,則不必比對XML元素的顯示順序。
設定PDF執行階段選項
設定Output服務的下列執行階段選項,以根據XML資料來源成功建立多個檔案:
- 許多檔案:指定輸出服務是建立單一檔案,還是建立多個檔案。 您可以指定true或false。 若要為XML資料來源中的每個資料記錄建立個別的檔案,請指定true。
- 檔案URI:指定輸出服務產生的檔案位置。 例如,假設您指定C:\Adobe\forms\Loan.pdf。 在此情況下,Output服務會建立名為Loan.pdf的檔案,並將該檔案放在C:\Adobe\forms資料夾中。 如果有多個檔案,檔案名稱為Loan0001.pdf、Loan0002.pdf、Loan0003.pdf等。 如果您指定檔案位置,檔案會放置在伺服器上,而非使用者端電腦上。
- 記錄名稱:指定資料來源中用來分隔資料記錄的XML元素名稱。 例如,在本節前面顯示的範例XML資料來源中,分隔資料記錄的XML元素稱為
LoanRecord。 (您不必設定「記錄名稱」執行時間選項,而是可以將「記錄層次」指定為一個數值,表示包含資料記錄的元素層次,以設定「記錄層次」。 不過,您只能設定「記錄名稱」或「記錄層次」。 您無法同時設定這兩個值。)
設定演算執行階段選項
您可以在建立多個檔案時設定演算執行階段選項。 雖然這些選項並非必要(不同於必要的輸出執行階段選項),但您可以執行工作,例如改善「輸出」服務的效能。 例如,您可以快取Output服務用來改善效能的表單設計。
Output服務處理批次記錄時,會以累加方式讀取包含多個記錄的資料。 也就是說,Output服務會將資料讀入記憶體,並在批次記錄處理時釋出資料。 設定兩個執行階段選項之一時,輸出服務會以累加方式載入資料。 如果您設定[記錄名稱]執行階段選項,Output服務會以累加方式讀取資料。 同樣地,如果您將「記錄層級」執行時間選項設為2或更大,Output服務會以累加方式讀取資料。
您可以使用PDFOutputOptionsSpec或PrintedOutputOptionSpec物件的setLazyLoading方法控制輸出服務是否執行增量載入。 您可以將值false傳遞至此方法,此方法會關閉累加式載入。
產生多個PDF檔案
在參照包含多個資料記錄並設定執行階段選項的有效XML資料來源後,您可以叫用Output服務,使其產生多個檔案。 產生多個記錄時,OutputResult物件的getGeneratedDoc方法會傳回null。
擷取作業的結果
Output服務執行作業之後,會傳回指定作業是否成功的XML資料。 Output服務會傳回下列XML。 在此情況下,Output服務會產生42份檔案。
<?xml version="1.0" encoding="UTF-8"?>
<printResult>
<status>0</status>
<requestId>4ad85f9e2</requestId>
<context/>
<messages>
<message>Printed all 42 records successfully.</message>
</messages>
<printSpec>
<input>
<validated>true</validated>
<dataFile recordIdField="" recordLevel="0" recordName="LoanRecord"/>
<sniffRules lookAhead="300"/>
<formDesign>Loan.xdp</formDesign>
<contentRoot>C:\Adobe</contentRoot>
<metadata-spec record="false"/>
</input>
<output>
<format>PDF</format>
<fileURI>C:\Adobe\forms\Loan.pdf</fileURI>
<optionString>cacheenabled=true&padebug=false&linearpdf=false&pdfarevisionnumber=1&pdfaconformance=A&taggedpdf=false&TransactionTimeOut=180</optionString>
<waitForResponse>true</waitForResponse>
<outputStream>multiple</outputStream>
</output>
</printSpec>
</printResult>
另請參閱
使用Java API建立多個PDF檔案 create-multiple-pdf-files-using-the-java-api
使用Output API (Java)建立多個PDF檔案:
-
包含專案檔案」
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar。
-
建立輸出使用者端物件
- 建立包含連線屬性的
ServiceClientFactory物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。
- 建立包含連線屬性的
-
參考XML資料來源
- 使用它的建構函式並傳遞指定XML檔案位置的字串值,建立代表包含多個記錄的XML資料來源的
java.io.FileInputStream物件。 - 使用它的建構函式並傳遞
java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
- 使用它的建構函式並傳遞指定XML檔案位置的字串值,建立代表包含多個記錄的XML資料來源的
-
設定PDF執行階段選項
- 使用物件的建構函式建立
PDFOutputOptionsSpec物件。 - 透過叫用
PDFOutputOptionsSpec物件的setGenerateManyFiles方法來設定[許多檔案]選項。 例如,傳遞值true以指示輸出服務為XML資料來源中的每個記錄建立個別的PDF檔案。 (如果您傳遞false,Output服務會產生包含所有記錄的單一PDF檔案)。 - 透過叫用
PDFOutputOptionsSpec物件的setFileUri方法並傳遞字串值來設定檔案URI選項,該字串值指定輸出服務產生的檔案位置。 檔案URI選項是相對於主控AEM Forms的J2EE應用程式伺服器,而非使用者端電腦。 - 透過叫用
OutputOptionsSpec物件的setRecordName方法並傳遞字串值來設定「記錄名稱」選項,該字串值指定資料來源中用於分隔資料記錄的XML元素名稱。 (例如,請考量本節前面顯示的XML資料來源。 分隔資料記錄的XML元素名稱為LoanRecord)。
- 使用物件的建構函式建立
-
設定演算執行階段選項
- 使用物件的建構函式建立
RenderOptionsSpec物件。 - 快取表單設計以透過叫用
RenderOptionsSpec物件的setCacheEnabled並傳遞true的Boolean值來改善輸出服務的效能。
- 使用物件的建構函式建立
-
產生多個PDF檔案
叫用
OutputClient物件的generatePDFOutput方法並傳遞下列值,以產生多個PDF檔案:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定表單設計的名稱。
- 字串值,指定表單設計所在的內容根。
- 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
com.adobe.idp.Document物件。
generatePDFOutput方法傳回包含作業結果的OutputResult物件。 -
擷取作業的結果
- 建立代表將包含
generatePDFOutput方法結果的XML檔案的java.io.File物件。 確認副檔名為.xml。 - 叫用
com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案(請確定您使用的是applyUsageRights方法傳回的com.adobe.idp.Document物件)。
- 建立代表將包含
另請參閱
使用網站服務API建立多個PDF檔案 create-multiple-pdf-files-using-the-web-service-api
使用輸出API (Web服務)建立多個PDF檔案:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立輸出使用者端物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至AEM Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。 但是,請指定?blob=mtom以使用MTOM。 -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給欄位
OutputServiceClient.ClientCredentials.UserName.UserName。 - 將對應的密碼值指派給欄位
OutputServiceClient.ClientCredentials.UserName.Password。 - 將常數值
HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType。 - 將常數值
BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode。
- 將AEM表單使用者名稱指派給欄位
-
-
參考XML資料來源。
- 使用物件的建構函式建立
BLOB物件。BLOB物件是用來儲存包含多個記錄的表單資料。 - 透過叫用它的建構函式來建立
System.IO.FileStream物件。 傳遞代表包含多個記錄之XML檔案的檔案位置的字串值。 - 建立位元組陣列以儲存
System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。 - 呼叫
System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。 - 以位元組陣列的內容指派其
MTOM欄位,填入BLOB物件。
- 使用物件的建構函式建立
-
設定PDF執行階段選項。
- 使用物件的建構函式建立
PDFOutputOptionsSpec物件。 - 為
OutputOptionsSpec物件的generateManyFiles資料成員指派布林值,以設定[許多檔案]選項。 例如,將值true指派給此資料成員,以指示輸出服務為XML資料來源中的每個記錄建立個別的PDF檔案。 (如果您將false指派給此資料成員,則Output服務會產生包含所有記錄的單一PDF)。 - 指定字串值來設定檔案URI選項,該字串值指定輸出服務產生給
OutputOptionsSpec物件的fileURI資料成員的檔案位置。 檔案URI選項是相對於主控AEM Forms的J2EE應用程式伺服器,而非使用者端電腦。 - 指定字串值來設定記錄名稱選項,該字串值指定資料來源中的XML元素名稱,該資料來源可將資料記錄分隔至
OutputOptionsSpec物件的recordName資料成員。 - 指定整數值,指定輸出服務產生給
OutputOptionsSpec物件的copies資料成員的復本數目,以設定復本選項。
- 使用物件的建構函式建立
-
設定演算執行階段選項。
- 使用物件的建構函式建立
RenderOptionsSpec物件。 - 快取表單設計以透過將值
true指派給RenderOptionsSpec物件的cacheEnabled資料成員來改善Output服務的效能。
- 使用物件的建構函式建立
-
產生多個PDF檔案。
叫用
OutputServiceService物件的generatePDFOutput方法並傳遞下列值,以建立多個PDF檔案:- TransformationFormat列舉值。 若要產生PDF檔案,請指定
TransformationFormat.PDF。 - 字串值,指定表單設計的名稱。
- 字串值,指定表單設計所在的內容根。
- 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
BLOB物件。 - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將描述檔案的產生中繼資料填入此物件。 - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將結果資料填入此物件中。 - 包含作業結果的
OutputResult物件。
- TransformationFormat列舉值。 若要產生PDF檔案,請指定
-
擷取作業的結果
- 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表包含結果資料之XML檔案位置的字串值。 確認副檔名為.xml。 - 建立位元組陣列,以儲存
BLOB物件的資料內容,該物件是以OutputServiceService物件的generatePDFOutput方法(第八個引數)填入的結果資料。 取得BLOB物件的binaryData資料成員的值,以填入位元組陣列。 - 透過叫用它的建構函式並傳遞
System.IO.FileStream物件來建立System.IO.BinaryWriter物件。 - 呼叫
System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入XML檔案。
- 建立
另請參閱
建立搜尋規則 creating-search-rules
您可以建立搜尋規則,讓輸出服務檢查輸入資料,並根據資料內容使用不同的表單設計來產生輸出。 例如,如果文字 mortgage 位於輸入資料中,則輸出服務可以使用名為Mortgage.xdp的表單設計。 同樣地,如果輸入資料中有文字 automobile,則輸出服務可以使用儲存為AutomobileLoan.xdp的表單設計。 雖然Output服務可以產生不同的輸出型別,但本節假設了Output服務會產生PDF檔案。 下圖顯示透過處理XML資料檔案並使用許多表單設計之一來產生PDF檔案的Output服務。
此外,Output服務能夠產生檔案套件,其中資料集中提供了多個記錄,每個記錄都與一個表單設計相符,並且由多個表單設計產生單個檔案。
步驟摘要 summary_of_steps-8
若要指示Output服務在產生檔案時使用搜尋規則,請執行下列步驟:
- 包含專案檔案。
- 建立輸出使用者端物件。
- 參考XML資料來源。
- 定義搜尋規則。
- 設定PDF執行階段選項。
- 設定演算執行階段選項。
- 產生PDF檔案。
- 擷取作業的結果。
包含專案檔
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,則請包含必要的JAR檔案。 如果您使用Web服務,請務必包含Proxy檔案。
必須將下列JAR檔案新增至專案的類別路徑:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-output-client.jar
- adobe-utilities.jar (如果AEM Forms部署在JBoss上,則為必要)
- jbossall-client.jar (如果AEM Forms部署在JBoss上,則為必要)
如果將AEM Forms部署在受支援的J2EE應用程式伺服器(不是JBoss)上,則您必須將adobe-utilities.jar和jbossall-client.jar取代為特定於已部署AEM Forms之J2EE應用程式伺服器的JAR檔案。
建立輸出使用者端物件
您必須先建立輸出服務使用者端物件,才能以程式設計方式執行輸出服務作業。
參考XML資料來源
每個要填入資料的表單欄位都必須有XML元素。 XML元素名稱必須符合欄位名稱。 如果XML元素未對應至表單欄位,或XML元素名稱不符合欄位名稱,則會忽略該元素。 只要指定所有XML元素,就不需要比對XML元素的顯示順序。
定義搜尋規則
若要定義搜尋規則,您可以定義「輸出」服務在輸入資料中搜尋的一或多個文字模式。 針對您定義的每個文字模式,指定在文字模式所在位置所使用的對應表單設計。 如果找到文字模式,則Output服務會使用對應的表單設計產生輸出。 文字模式的範例為 按揭。
設定PDF執行階段選項
設定下列PDF執行階段選項,讓Output服務根據多個表單設計成功建立PDF檔案:
- 檔案URI:指定輸出服務產生的PDF檔案的名稱和位置。
- 規則:指定您定義的規則。
- LookAHead:指定從輸入資料檔案的開頭開始要用來掃描已定義文字模式的位元組數。 預設值為500位元組。
設定演算執行階段選項
您可以在建立PDF檔案時設定演算執行階段選項。 雖然這些選項並非必要專案(不同於PDF執行階段選項),但您可以執行工作,例如改善Output服務的效能。 例如,您可以快取Output服務用來改善效能的表單設計。
產生PDF檔案
參照有效的XML資料來源並設定執行階段選項後,您可以叫用Output服務,使其產生PDF檔案。 如果Output服務在輸入資料中找到指定的文字模式,則會使用對應的表單設計。 如果未使用文字模式,則Output服務會使用預設的表單設計。
擷取作業的結果
Output服務執行作業之後,會傳回指定作業是否成功的XML資料。
另請參閱
使用Java API建立搜尋規則 create-search-rules-using-the-java-api
使用Output API (Java)建立搜尋規則:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar。
-
建立輸出使用者端物件。
- 建立包含連線屬性的
ServiceClientFactory物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。
- 建立包含連線屬性的
-
參考XML資料來源。
- 建立
java.io.FileInputStream物件,代表用來填入PDF檔案的XML資料來源,使用它的建構函式,並傳遞指定XML檔案位置的字串值。 - 使用它的建構函式並傳遞
java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
- 建立
-
定義搜尋規則。
- 使用物件的建構函式建立
Rule物件。 - 透過叫用
Rule物件的setPattern方法並傳遞指定文字模式的字串值來定義文字模式。 - 透過叫用
Rule物件的setForm方法定義對應的表單設計。 傳遞指定表單設計名稱的字串值。
note note NOTE 針對您要定義的每個文字模式,重複前三個子步驟。 - 使用
java.util.ArrayList建構函式建立java.util.List物件。 - 針對您建立的每個
Rule物件,叫用java.util.List物件的add方法,並傳遞Rule物件。
- 使用物件的建構函式建立
-
設定PDF執行階段選項。
- 使用物件的建構函式建立
PDFOutputOptionsSpec物件。 - 指定輸出服務透過叫用
PDFOutputOptionsSpec物件的setFileURI方法所產生PDF檔案的名稱和位置。 傳遞字串值,指定PDF檔案的位置。 檔案URI選項是相對於主控AEM Forms的J2EE應用程式伺服器,而非使用者端電腦。 - 透過叫用
PDFOutputOptionsSpec物件的setRules方法設定您定義的規則。 傳遞包含Rule物件的java.util.List物件。 - 透過叫用
PDFOutputOptionsSpec物件的setLookAhead方法,設定要掃描已定義文字模式的位元組數。 傳遞代表位元組數的整數值。
- 使用物件的建構函式建立
-
設定演算執行階段選項。
- 使用物件的建構函式建立
RenderOptionsSpec物件。 - 快取表單設計以透過叫用
RenderOptionsSpec物件的setCacheEnabled並傳遞true來改善輸出服務的效能。
- 使用物件的建構函式建立
-
產生PDF檔案。
叫用
OutputClient物件的generatePDFOutput方法並傳遞下列值,產生以多個表單設計為基礎的PDF檔案:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定預設表單設計的名稱。 亦即,當找不到文字圖樣時,所使用的表單設計。
- 字串值,指定表單設計所在的內容根。
- 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 com.adobe.idp.Document物件,其中包含由Output服務針對定義的文字模式所搜尋的表單資料。
generatePDFOutput方法傳回包含作業結果的OutputResult物件。 -
擷取作業的結果。
- 呼叫
OutputResult物件的getStatusDoc方法,建立代表generatePDFOutput方法狀態的com.adobe.idp.Document物件。 - 建立將包含作業結果的
java.io.File物件。 確認副檔名為.xml。 - 叫用
com.adobe.idp.Document物件的copyToFile方法,將com.adobe.idp.Document物件的內容複製到檔案(請確定您使用的是getStatusDoc方法傳回的com.adobe.idp.Document物件)。
- 呼叫
另請參閱
使用Web服務API建立搜尋規則 create-search-rules-using-the-web-service-api
使用輸出API (Web服務)建立搜尋規則:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立輸出使用者端物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至AEM Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。 但是,請指定?blob=mtom以使用MTOM。 -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給欄位
OutputServiceClient.ClientCredentials.UserName.UserName。 - 將對應的密碼值指派給欄位
OutputServiceClient.ClientCredentials.UserName.Password。 - 將常數值
HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType。 - 將常數值
BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode。
- 將AEM表單使用者名稱指派給欄位
-
-
參考XML資料來源。
- 使用物件的建構函式建立
BLOB物件。BLOB物件是用來儲存將與PDF檔案合併的資料。 - 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表要加密之PDF檔案的檔案位置及開啟檔案的模式的字串值。 - 建立位元組陣列以儲存
System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。 - 呼叫
System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。 - 以位元組陣列的內容指派其
MTOM欄位,填入BLOB物件。
- 使用物件的建構函式建立
-
定義搜尋規則。
- 使用物件的建構函式建立
Rule物件。 - 藉由指派字串值來定義文字模式,該字串值會指定文字模式給
Rule物件的pattern資料成員。 - 藉由指派字串值來定義對應的表單設計,該字串值指定表單設計給
Rule物件的form資料成員。
note note NOTE 針對您要定義的每個文字模式,重複前三個子步驟。 - 建立儲存規則的
MyArrayOf_xsd_anyType物件。 - 將每個
Rule物件指派給MyArrayOf_xsd_anyType陣列的元素。 為每個Rule物件叫用MyArrayOf_xsd_anyType物件的Add方法。
- 使用物件的建構函式建立
-
設定PDF執行階段選項
- 使用物件的建構函式建立
PDFOutputOptionsSpec物件。 - 指定字串值來設定檔案URI選項,該字串值指定輸出服務產生給
PDFOutputOptionsSpec物件的fileURI資料成員的PDF檔案位置。 檔案URI選項是相對於主控AEM Forms的J2EE應用程式伺服器,而非使用者端電腦。 - 指定整數值,指定輸出服務產生給
PDFOutputOptionsSpec物件的copies資料成員的復本數目,以設定復本選項。 - 將儲存規則的
MyArrayOf_xsd_anyType物件指派給PDFOutputOptionsSpec物件的rules資料成員,以設定您定義的規則。 - 將代表要掃描位元組數的整數值指派給
PDFOutputOptionsSpec物件的lookAhead資料方法,以設定要掃描已定義文字模式的位元組數。
- 使用物件的建構函式建立
-
設定演算執行階段選項
- 使用物件的建構函式建立
RenderOptionsSpec物件。 - 快取表單設計以透過將值
true指派給RenderOptionsSpec物件的cacheEnabled資料成員來改善Output服務的效能。
note note NOTE 如果輸入檔案是Acrobat表單,則您無法使用 RenderOptionsSpec物件的pdfVersion成員來設定PDF檔案的版本。 輸出PDF檔案會保留Acrobat表單的PDF版本。 同樣地,如果輸入檔案是Acrobat表單,則您無法使用RenderOptionsSpec物件的taggedPDF方法來設定標籤的PDF選項。note note NOTE 如果輸入PDF檔案是經認證或數位簽署的,則您無法使用 RenderOptionsSpec物件的linearizedPDF成員來設定線性PDF選項。 如需詳細資訊,請參閱數位簽署PDF檔案。 - 使用物件的建構函式建立
-
產生PDF檔案
呼叫
OutputServiceService物件的generatePDFOutput方法並傳遞下列值,以建立PDF檔案:TransformationFormat列舉值。 若要產生PDF檔案,請指定TransformationFormat.PDF。- 字串值,指定表單設計的名稱。
- 字串值,指定表單設計所在的內容根。
- 包含PDF執行階段選項的
PDFOutputOptionsSpec物件。 - 包含轉譯執行階段選項的
RenderOptionsSpec物件。 - 包含要與表單設計合併之資料的XML資料來源的
BLOB物件。 - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將描述檔案的產生中繼資料填入此物件。 (只有Web服務呼叫才需要此引數值)。 - 由
generatePDFOutput方法填入的BLOB物件。generatePDFOutput方法會將結果資料填入此物件中。 (只有Web服務呼叫才需要此引數值)。 - 包含作業結果的
OutputResult物件。 (只有Web服務呼叫才需要此引數值)。
note note NOTE 當透過叫用 generatePDFOutput方法產生PDF檔案時,您無法將資料與已簽署、已驗證或包含使用許可權的XFAPDF表單合併。 如需使用許可權的相關資訊,請參閱將使用許可權套用至PDF檔案。 -
擷取作業的結果
- 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表包含結果資料之XML檔案位置的字串值。 確認副檔名為XML。 - 建立位元組陣列,以儲存
BLOB物件的資料內容,該物件是以OutputServiceService物件的generatePDFOutput方法(第八個引數)填入的結果資料。 取得BLOB物件的MTOM資料成員的值,以填入位元組陣列。 - 透過叫用它的建構函式並傳遞
System.IO.FileStream物件來建立System.IO.BinaryWriter物件。 - 呼叫
System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入XML檔案。
- 建立
另請參閱
平面化PDF檔案 flattening-pdf-documents
您可以使用Output服務將互動式PDF檔案轉換為非互動式PDF。 互動式PDF檔案可讓使用者輸入或修改PDF檔案欄位中的資料。 將互動PDF檔案轉換為非互動PDF檔案的程式稱為 平面化。 將PDF檔案平面化時,使用者無法修改檔案欄位中的資料。 平面化PDF檔案的一個原因是為了確保無法修改資料。
您可以平面化下列PDF檔案型別:
- 互動式XFAPDF檔案
- Acrobat Forms
嘗試平面化非互動式PDF檔案的PDF會產生例外狀況。
步驟摘要 summary_of_steps-9
若要將互動式PDF檔案平面化為非互動式PDF檔案,請執行下列步驟:
- 包含專案檔案。
- 建立輸出使用者端物件。
- 擷取互動式PDF檔案。
- 轉換PDF檔案。
- 將非互動式PDF檔案儲存為PDF檔案。
包含專案檔
在您的開發專案中包含必要的檔案。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您是使用Web服務,請務必包含Proxy檔案。
必須將下列JAR檔案新增至專案的類別路徑:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-output-client.jar
- adobe-utilities.jar (如果AEM Forms部署在JBoss上,則為必要)
- jbossall-client.jar (如果AEM Forms部署在JBoss上,則為必要)
如果將AEM Forms部署在受支援的J2EE應用程式伺服器(不是JBoss)上,則必須將adobe-utilities.jar和jbossall-client.jar檔案取代為特定於AEM Forms部署所在之J2EE應用程式伺服器的JAR檔案。 如需有關所有AEM Forms JAR檔案位置的資訊,請參閱包含AEM Forms Java程式庫檔案。
建立輸出使用者端物件
您必須先建立輸出服務使用者端物件,才能以程式設計方式執行輸出服務作業。 如果您使用Java API,請建立OutputClient物件。 如果您使用輸出Web服務API,請建立OutputServiceService物件。
擷取互動式PDF檔案
擷取您要轉換成非互動式PDF檔案的互動式PDF檔案。 嘗試轉換非互動式PDF檔案會產生例外狀況。
轉換PDF檔案
擷取互動式PDF檔案後,可將其轉換成非互動式PDF檔案。 Output服務會傳回非互動式PDF檔案。
將非互動式PDF檔案儲存為PDF檔案
您可以將非互動式PDF檔案儲存為PDF檔案。
另請參閱
使用Java API平面化PDF檔案 flatten-a-pdf-document-using-the-java-api
使用Output API (Java)將互動式PDF檔案平面化為非互動式PDF檔案:
-
包含專案檔案。
在您的Java專案的類別路徑中包含使用者端JAR檔案,例如adobe-output-client.jar。
-
建立輸出使用者端物件。
- 建立包含連線屬性的
ServiceClientFactory物件。 - 使用它的建構函式並傳遞
ServiceClientFactory物件來建立OutputClient物件。
- 建立包含連線屬性的
-
擷取互動式PDF檔案。
- 建立代表互動式PDF檔案的
java.io.FileInputStream物件,使用它的建構函式並傳遞字串值(指定互動式PDF檔案的位置)來進行轉換。 - 使用它的建構函式並傳遞
java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
- 建立代表互動式PDF檔案的
-
轉換PDF檔案。
呼叫
OutputServiceService物件的transformPDF方法並傳遞下列值,將互動式PDF檔案轉換為非互動式PDF檔案:- 包含互動式PDF檔案的
com.adobe.idp.Document物件。 TransformationFormat列舉值。 若要產生非互動式PDF檔案,請指定TransformationFormat.PDF。- 指定修訂編號的
PDFARevisionNumber列舉值。 由於此引數適用於PDF/檔案,因此您可以指定null。 - 代表修訂編號和年份的字串值,以冒號分隔。 由於此引數適用於PDF/檔案,因此您可以指定
null。 - 代表PDF/A一致性層級的
PDFAConformance列舉值。 由於此引數適用於PDF/檔案,因此您可以指定null。
transformPDF方法傳回包含非互動式PDF檔案的com.adobe.idp.Document物件。 - 包含互動式PDF檔案的
-
將非互動式PDF檔案儲存為PDF檔案。
- 建立
java.io.File物件,並確定副檔名為.pdf。 - 叫用
Document物件的copyToFile方法,將Document物件的內容複製到檔案(請確定您使用的是transformPDF方法傳回的Document物件)。
- 建立
另請參閱
使用網站服務API平面化PDF檔案 flatten-a-pdf-document-using-the-web-service-api
使用Output API (Web服務)將互動式PDF檔案平面化為非互動式PDF檔案:
-
包含專案檔案。
建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義:
http://localhost:8080/soap/services/OutputService?WSDL&lc_version=9.0.1。note note NOTE 將 localhost取代為主控AEM Forms之伺服器的IP位址。 -
建立輸出使用者端物件。
-
使用預設建構函式建立
OutputServiceClient物件。 -
使用
System.ServiceModel.EndpointAddress建構函式建立OutputServiceClient.Endpoint.Address物件。 將指定WSDL的字串值傳遞至AEM Forms服務(例如,http://localhost:8080/soap/services/OutputService?blob=mtom)。 您不需要使用lc_version屬性。 當您建立服務參考時,會使用此屬性。 但是,請指定?blob=mtom以使用MTOM。 -
取得
OutputServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding。 -
將
System.ServiceModel.BasicHttpBinding物件的MessageEncoding欄位設為WSMessageEncoding.Mtom。 此值可確保使用MTOM。 -
執行下列工作來啟用基本的HTTP驗證:
- 將AEM表單使用者名稱指派給欄位
OutputServiceClient.ClientCredentials.UserName.UserName。 - 將對應的密碼值指派給欄位
OutputServiceClient.ClientCredentials.UserName.Password。 - 將常數值
HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType。 - 將常數值
BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode。
- 將AEM表單使用者名稱指派給欄位
-
-
擷取互動式PDF檔案。
- 使用物件的建構函式建立
BLOB物件。BLOB物件是用來儲存互動式PDF檔案。 - 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表互動式PDF檔案檔案位置的字串值。 - 建立位元組陣列以儲存
System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。 - 呼叫
System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。 - 以位元組陣列的內容指派物件的
MTOM屬性,填入BLOB物件。
- 使用物件的建構函式建立
-
轉換PDF檔案。
呼叫
OutputClient物件的transformPDF方法並傳遞下列值,將互動式PDF檔案轉換為非互動式PDF檔案:- 包含互動式PDF檔案的
BLOB物件。 TransformationFormat列舉值。 若要產生非互動式PDF檔案,請指定TransformationFormat.PDF。- 指定修訂編號的
PDFARevisionNumber列舉值。 - Boolean值,指定是否使用
PDFARevisionNumber列舉值。 由於此引數適用於PDF/檔案,因此您可以指定false。 - 代表修訂編號和年份的字串值,以冒號分隔。 由於此引數適用於PDF/檔案,因此您可以指定
null。 - 代表PDF/A一致性層級的
PDFAConformance列舉值。 - 指定是否使用
PDFAConformance列舉值的布林值。 由於此引數適用於PDF/檔案,因此您可以指定false。
transformPDF方法傳回包含非互動式PDF檔案的BLOB物件。 - 包含互動式PDF檔案的
-
將非互動式PDF檔案儲存為PDF檔案。
- 建立
System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表非互動式PDF檔案檔案位置的字串值。 - 建立位元組陣列,儲存
transformPDF方法傳回的BLOB物件的資料內容。 取得BLOB物件的MTOM資料成員的值,以填入位元組陣列。 - 透過叫用它的建構函式並傳遞
System.IO.FileStream物件來建立System.IO.BinaryWriter物件。 - 呼叫
System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。
- 建立
另請參閱