在檔案格式和PDF之間轉換 converting-between-file-formatsand-pdf

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

關於產生PDF服務

「產生PDF」服務會將原生檔案格式轉換為PDF。 它也會將PDF轉換為其他檔案格式,並最佳化PDF檔案的大小。

「產生PDF」服務使用原生應用程式將下列檔案格式轉換為PDF。 除非另有指示,否則僅支援這些應用程式的德文、法文、英文和日文版。 僅限Windows ​表示只支援Windows Server® 2003和Windows Server 2008。

  • Microsoft Office 2003和2007可轉換DOC、DOCX、RTF、TXT、XLS、XLSX、PPT、PPTX、VSD、MPP、MPPX、XPS和PUB (僅限Windows)
NOTE
需要Acrobat® 9.2或更新版本,才能將Microsoft XPS格式轉換為PDF。
  • Autodesk AutoCAD 2005、2006、2007、2008和2009轉換DWF、DWG和DXW (僅限英文)
  • Corel WordPerfect 12與X4可轉換WPD、QPW、SHW (僅限英文)
  • OpenOffice 2.0、2.4、3.0.1和3.1轉換ODT、ODS、ODP、ODP、ODG、ODF、SXW、SXI、SXC、SXD、DOC、DOCX、RTF、TXT、XLS、XLSX、PPT、PPPTX、VSD、MPP、MPPX和PUB
NOTE
產生PDF服務不支援64位元版本的OpenOffice。
  • Adobe Photoshop® CS2轉換PSD(僅限Windows)
NOTE
不支援Photoshop CS3和CS4,因為它們不支援Windows Server 2003或Windows Server 2008。
  • Adobe FrameMaker® 7.2和8可轉換FM (僅限Windows)
  • AdobePageMaker® 7.0可轉換PMD、PM6、P65及PM (僅限Windows)
  • 協力廠商應用程式支援的原生格式(需要開發應用程式專用的安裝檔案) (僅限Windows)

「產生PDF」服務會將下列以標準為基礎的檔案格式轉換為PDF。

  • 視訊格式:SWF、FLV (僅限Windows)
  • 影像格式:JPEG、JPG、JP2、J2Kí、JPC、J2C、GIF、BMP、TIFF、TIF、PNG、JPF
  • HTML(Windows、Sun™Solaris™和Linux®)

產生PDF服務會將PDF轉換為下列檔案格式(僅限Windows):

  • 封裝式PostScript (EPS)
  • HTML3.2
  • HTML4.01搭配CSS 1.0
  • DOC (Microsoft Word格式)
  • RTF
  • 文字(可存取和純文字)
  • XML
  • 只使用DeviceRGB色域的PDF/A-1a
  • 只使用DeviceRGB色域的PDF/A-1b

產生PDF服務需要您執行下列管理工作:

  • 在託管AEM Forms的電腦上安裝必要的原生應用程式
  • 在託管Adobe Acrobat的電腦上安裝AEM Forms Professional或Acrobat Pro Extended 9.2
  • 執行安裝後設定工作

使用JBoss Turnkey安裝和部署AEM Forms中會說明這些工作。

您可以使用「產生PDF」服務完成這些工作:

  • 從原生檔案格式轉換成PDF。
  • 將HTML檔案轉換為PDF檔案。
  • 將PDF檔案轉換為檔案格式。
NOTE
如需有關產生PDF服務的詳細資訊,請參閱AEM Forms的服務參考

將Word檔案轉換為PDF檔案 converting-word-documents-to-pdf-documents

本節說明如何使用產生PDFAPI,以程式設計方式將Microsoft Word檔案轉換為PDF檔案。

NOTE
如需其他檔案格式的詳細資訊,請參閱新增其他原生檔案格式的支援
NOTE
如需有關產生PDF服務的詳細資訊,請參閱AEM Forms的服務參考

步驟摘要 summary-of-steps

若要將Microsoft Word檔案轉換為PDF檔案,請執行下列工作:

  1. 包含專案檔案。
  2. 建立產生PDF使用者端。
  3. 擷取檔案以轉換為PDF檔案。
  4. 將檔案轉換為PDF檔案。
  5. 擷取結果。

包含專案檔

將必要的檔案納入您的開發專案中。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請確定您包含Proxy檔案。

建立產生PDF使用者端

在您以程式設計方式執行產生PDF作業之前,請先建立產生PDF服務使用者端。 如果您使用Java API,請建立GeneratePdfServiceClient物件。 如果您使用網站服務API,請建立GeneratePDFServiceService物件。

擷取要轉換成PDF檔案的檔案

擷取Microsoft Word檔案以轉換為PDF檔案。

將檔案轉換為PDF檔案

建立GeneratePDF服務使用者端後,您可以叫用createPDF2方法。 此方法需要轉換檔案的相關資訊,包括副檔名。

擷取結果

將檔案轉換為PDF檔案後,您可以擷取結果。 例如,將Word檔案轉換為PDF檔案後,您可以擷取並儲存PDF檔案。

另請參閱

使用Java API將Word檔案轉換為PDF檔案

使用Web服務API將Word檔案轉換為PDF檔案

包含AEM Forms Java程式庫檔案

設定連線屬性

產生PDF服務API快速啟動

使用Java API將Word檔案轉換為PDF檔案 convert-word-documents-to-pdf-documents-using-the-java-api

使用產生PDFAPI (Java)將Microsoft Word檔案轉換為PDF檔案:

  1. 包含專案檔案。

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

  2. 建立產生PDF使用者端。

    • 建立包含連線屬性的ServiceClientFactory物件。
    • 使用它的建構函式並傳遞ServiceClientFactory物件來建立GeneratePdfServiceClient物件。
  3. 擷取檔案以轉換為PDF檔案。

    • 使用建構函式建立代表要轉換之Word檔案的java.io.FileInputStream物件。 傳遞字串值,指定檔案位置。
    • 使用它的建構函式並傳遞java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
  4. 將檔案轉換為PDF檔案。

    呼叫GeneratePdfServiceClient物件的createPDF2方法並傳遞下列值,以將檔案轉換為PDF檔案:

    • 代表要轉換之檔案的com.adobe.idp.Document物件。
    • 包含副檔名的java.lang.String物件。
    • 包含要用於轉換之檔案型別設定的java.lang.String物件。 檔案型別設定提供不同檔案型別(例如.doc或.xls)的轉換設定。
    • 包含要使用的PDF設定名稱的java.lang.String物件。 例如,您可以指定Standard
    • 包含要使用的安全性設定名稱的java.lang.String物件。
    • 選擇性的com.adobe.idp.Document物件,其中包含產生PDF檔案時要套用的設定。
    • 包含要套用至PDF檔案之中繼資料資訊的可選com.adobe.idp.Document物件。

    createPDF2方法傳回包含新PDF檔案和記錄檔資訊的CreatePDFResult物件。 記錄檔通常包含轉換請求產生的錯誤或警告訊息。

  5. 擷取結果。

    若要取得PDF檔案,請執行下列動作:

    • 叫用CreatePDFResult物件的getCreatedDocument方法,此方法會傳回com.adobe.idp.Document物件。
    • 叫用com.adobe.idp.Document物件的copyToFile方法,從上一步建立的物件中擷取PDF檔案。

    如果您使用createPDF2方法取得記錄檔案(不適用於HTML轉換),請執行下列動作:

    • 叫用CreatePDFResult物件的getLogDocument方法。 這會傳回com.adobe.idp.Document物件。
    • 叫用com.adobe.idp.Document物件的copyToFile方法來擷取記錄檔案。

另請參閱

步驟摘要

快速入門(SOAP模式):使用Java API將Microsoft Word檔案轉換為PDF檔案

包含AEM Forms Java程式庫檔案

設定連線屬性

使用Web服務API將Word檔案轉換為PDF檔案 convert-word-documents-to-pdf-documents-using-the-web-service-api

使用產生PDFAPI (Web服務)將Microsoft Word檔案轉換為PDF檔案:

  1. 包含專案檔案。

    建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義: http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1

    note note
    NOTE
    localhost取代為主控AEM Forms之伺服器的IP位址。
  2. 建立產生PDF使用者端。

    • 使用預設建構函式建立GeneratePDFServiceClient物件。

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

    • 取得GeneratePDFServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding

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

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

      • 將AEM表單使用者名稱指派給欄位GeneratePDFServiceClient.ClientCredentials.UserName.UserName
      • 將對應的密碼值指派給欄位GeneratePDFServiceClient.ClientCredentials.UserName.Password
      • 將常數值HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 將常數值BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode
  3. 擷取檔案以轉換為PDF檔案。

    • 使用物件的建構函式建立BLOB物件。 BLOB物件是用來儲存您要轉換成PDF檔案的檔案。
    • 透過叫用它的建構函式來建立System.IO.FileStream物件。 傳遞字串值,該值代表要轉換的檔案位置以及開啟檔案的模式。
    • 建立位元組陣列以儲存System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。
    • 呼叫System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。
    • 將位元組陣列的內容指派給其MTOM屬性,以填入BLOB物件。
  4. 將檔案轉換為PDF檔案。

    呼叫GeneratePDFServiceService物件的CreatePDF2方法並傳遞下列值,以將檔案轉換為PDF檔案:

    • 代表要轉換之檔案的BLOB物件。
    • 包含副檔名的字串。
    • 包含要用於轉換之檔案型別設定的java.lang.String物件。 檔案型別設定提供不同檔案型別(例如.doc或.xls)的轉換設定。
    • 字串物件,包含要使用的PDF設定。 您可以指定Standard
    • 字串物件,包含要使用的安全性設定。 您可以指定No Security
    • 選擇性的BLOB物件,其中包含產生PDF檔案時要套用的設定。
    • 包含要套用至PDF檔案之中繼資料資訊的可選BLOB物件。
    • CreatePDF2方法填入的型別BLOB的輸出引數。 CreatePDF2方法會將轉換的檔案填入此物件中。 (只有Web服務呼叫才需要此引數值)。
    • CreatePDF2方法填入的型別BLOB的輸出引數。 CreatePDF2方法會將記錄檔案填入此物件。 (只有Web服務呼叫才需要此引數值)。
  5. 擷取結果。

    • BLOB物件的MTOM欄位指派給位元組陣列,以擷取轉換的PDF檔案。 位元組陣列代表轉換的PDF檔案。 請確定您使用用作createPDF2方法之輸出引數的BLOB物件。
    • 建立System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表轉換PDF檔案檔案位置的字串值。
    • 透過叫用它的建構函式並傳遞System.IO.FileStream物件來建立System.IO.BinaryWriter物件。
    • 呼叫System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。

另請參閱

步驟摘要

使用MTOM叫用AEM Forms

使用SwaRef叫用AEM Forms

將HTML檔案轉換為PDF檔案 converting-html-documents-to-pdf-documents

本節說明如何使用產生PDFAPI,以程式設計方式將HTML檔案轉換為PDF檔案。

NOTE
如需有關產生PDF服務的詳細資訊,請參閱AEM Forms的服務參考

步驟摘要 summary_of_steps-1

若要將HTML檔案轉換為PDF檔案,請執行下列工作:

  1. 包含專案檔案。
  2. 建立產生PDF使用者端。
  3. 擷取HTML內容以轉換為PDF檔案。
  4. 將HTML內容轉換為PDF檔案。
  5. 擷取結果。

包含專案檔

將必要的檔案納入您的開發專案中。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請確定您包含Proxy檔案。

建立產生PDF使用者端

您必須先建立產生PDF服務使用者端,才能以程式設計方式執行產生PDF作業。 如果您使用Java API,請建立GeneratePdfServiceClient物件。 如果您使用網站服務API,請建立GeneratePDFServiceService

擷取HTML內容以轉換為PDF檔案

參考您要轉換成HTML檔案的PDF內容。 您可以參照HTML內容,例如HTML檔案或可使用URL存取的HTML內容。

將HTML內容轉換為PDF檔案

建立服務使用者端後,您可以叫用適當的PDF建立作業。 此作業需要有關要轉換之檔案的資訊,包括目標檔案的路徑。

擷取結果

將HTML內容轉換為PDF檔案後,您可以擷取結果並儲存PDF檔案。

另請參閱

使用Java API將HTML內容轉換為PDF檔案

使用Web服務API將HTML內容轉換為PDF檔案

包含AEM Forms Java程式庫檔案

設定連線屬性

產生PDF服務API快速啟動

使用Java API將HTML內容轉換為PDF檔案 convert-html-content-to-a-pdf-document-using-the-java-api

使用產生HTMLAPI (Java)將PDF檔案轉換為PDF檔案:

  1. 包含專案檔案。

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

  2. 建立產生PDF使用者端。

    使用它的建構函式並傳遞包含連線屬性的ServiceClientFactory物件來建立GeneratePdfServiceClient物件。

  3. 擷取HTML內容以轉換為PDF檔案。

    建立字串變數並指派指向HTML內容的URL,以擷取HTML內容。

  4. 將HTML內容轉換為PDF檔案。

    叫用GeneratePdfServiceClient物件的htmlToPDF2方法,並傳遞下列值:

    • 包含要轉換之HTML檔案URL的java.lang.String物件。
    • 包含要用於轉換之檔案型別設定的java.lang.String物件。 檔案型別設定可包含串流層級。
    • 包含要使用的安全性設定名稱的java.lang.String物件。
    • 選擇性的com.adobe.idp.Document物件,其中包含產生PDF檔案時要套用的設定。 如果未提供此資訊,則會根據前三個引數自動選擇設定。
    • 包含要套用至PDF檔案之中繼資料資訊的可選com.adobe.idp.Document物件。
  5. 擷取結果。

    htmlToPDF2方法傳回HtmlToPdfResult物件,其中包含已產生的新PDF檔案。 若要取得新建立的PDF檔案,請執行下列動作:

    • 叫用HtmlToPdfResult物件的getCreatedDocument方法。 這會傳回com.adobe.idp.Document物件。
    • 叫用com.adobe.idp.Document物件的copyToFile方法,從上一步建立的物件中擷取PDF檔案。

另請參閱

將HTML檔案轉換為PDF檔案

快速入門(SOAP模式):使用Java API將HTML內容轉換為PDF檔案

快速入門(SOAP模式):使用Java API將HTML內容轉換為PDF檔案

包含AEM Forms Java程式庫檔案

設定連線屬性

使用Web服務API將HTML內容轉換為PDF檔案 convert-html-content-to-a-pdf-document-using-the-web-service-api

使用產生HTMLAPI (Web服務)將PDF內容轉換為PDF檔案:

  1. 包含專案檔案。

    建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義: http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1

    note note
    NOTE
    localhost取代為主控AEM Forms之伺服器的IP位址。
  2. 建立產生PDF使用者端。

    • 使用預設建構函式建立GeneratePDFServiceClient物件。

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

    • 取得GeneratePDFServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding

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

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

      • 將AEM表單使用者名稱指派給欄位GeneratePDFServiceClient.ClientCredentials.UserName.UserName
      • 將對應的密碼值指派給欄位GeneratePDFServiceClient.ClientCredentials.UserName.Password
      • 將常數值HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 將常數值BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode
  3. 擷取HTML內容以轉換為PDF檔案。

    建立字串變數並指派指向HTML內容的URL,以擷取HTML內容。

  4. 將HTML內容轉換為PDF檔案。

    呼叫GeneratePDFServiceService物件的HtmlToPDF2方法,將HTML內容轉換為PDF檔案,並傳遞下列值:

    • 包含要轉換之HTML內容的字串。
    • 包含要用於轉換之檔案型別設定的java.lang.String物件。
    • 字串物件,包含要使用的安全性設定。
    • 選擇性的BLOB物件,其中包含產生PDF檔案時要套用的設定。
    • 包含要套用至PDF檔案之中繼資料資訊的可選BLOB物件。
    • CreatePDF2方法填入的型別BLOB的輸出引數。 CreatePDF2方法會將轉換的檔案填入此物件中。 (只有Web服務呼叫才需要此引數值)。
  5. 擷取結果。

    • BLOB物件的MTOM欄位指派給位元組陣列,以擷取轉換的PDF檔案。 位元組陣列代表轉換的PDF檔案。 請確定您使用用作HtmlToPDF2方法之輸出引數的BLOB物件。
    • 建立System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表轉換PDF檔案檔案位置的字串值。
    • 透過叫用它的建構函式並傳遞System.IO.FileStream物件來建立System.IO.BinaryWriter物件。
    • 呼叫System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PDF檔案。

另請參閱

將HTML檔案轉換為PDF檔案

使用MTOM叫用AEM Forms

使用SwaRef叫用AEM Forms

將PDF檔案轉換為非影像格式 converting-pdf-documents-to-non-image-formats

本節說明如何使用產生PDFJava API和Web服務API,以程式設計方式將PDF檔案轉換成RTF檔案,這是非影像格式的範例。 其他非影像格式包括HTML、文字、DOC和EPS。 將PDF檔案轉換為RTF時,請確保PDF檔案不包含表單元素,例如提交按鈕。 不會轉換表單元素。

NOTE
如需有關產生PDF服務的詳細資訊,請參閱AEM Forms的服務參考

步驟摘要 summary_of_steps-2

若要將PDF檔案轉換為任何支援的型別,請執行下列步驟:

  1. 包含專案檔案。
  2. 建立產生PDF使用者端。
  3. 擷取要轉換的PDF檔案。
  4. 轉換PDF檔案。
  5. 儲存轉換的檔案。

包含專案檔

將必要的檔案納入您的開發專案中。 如果您使用Java建立使用者端應用程式,請包含必要的JAR檔案。 如果您使用Web服務,請確定您包含Proxy檔案。

建立產生PDF使用者端

您必須先建立產生PDF服務使用者端,才能以程式設計方式執行產生PDF作業。 如果您使用Java API,請建立GeneratePdfServiceClient物件。 如果您使用網站服務API,請建立GeneratePDFServiceService物件。

擷取要轉換的PDF檔案

擷取PDF檔案以轉換為非影像格式。

轉換PDF檔案

建立服務使用者端後,您可以叫用PDF匯出作業。 此作業需要有關要轉換之檔案的資訊,包括目標檔案的路徑。

儲存轉換的檔案

儲存轉換的檔案。 例如,如果您將PDF檔案轉換為RTF檔案,請將轉換的檔案儲存為RTF檔案。

另請參閱

使用Java API將PDF檔案轉換為RTF檔案

使用Web服務API將PDF檔案轉換為RTF檔案

包含AEM Forms Java程式庫檔案

設定連線屬性

產生PDF服務API快速啟動

使用Java API將PDF檔案轉換為RTF檔案 convert-a-pdf-document-to-a-rtf-file-using-the-java-api

使用產生PDFAPI (Java)將PDF檔案轉換為RTF檔案:

  1. 包含專案檔案。

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

  2. 建立產生PDF使用者端。

    使用它的建構函式並傳遞包含連線屬性的ServiceClientFactory物件來建立GeneratePdfServiceClient物件。

  3. 擷取要轉換的PDF檔案。

    • 使用建構函式建立代表要轉換之PDF檔案的java.io.FileInputStream物件。 傳遞字串值,指定PDF檔案的位置。
    • 使用它的建構函式並傳遞java.io.FileInputStream物件來建立com.adobe.idp.Document物件。
  4. 轉換PDF檔案。

    叫用GeneratePdfServiceClient物件的exportPDF2方法,並傳遞下列值:

    • 代表要轉換之PDF檔案的com.adobe.idp.Document物件。
    • 包含要轉換之檔案名稱的java.lang.String物件。
    • 包含Adobe PDF設定名稱的java.lang.String物件。
    • 指定轉換目標檔案型別的ConvertPDFFormatType物件。
    • 選擇性的com.adobe.idp.Document物件,其中包含產生PDF檔案時要套用的設定。

    exportPDF2方法傳回包含轉換檔案的ExportPDFResult物件。

  5. 轉換PDF檔案。

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

    • 叫用ExportPDFResult物件的getConvertedDocument方法。 這會傳回com.adobe.idp.Document物件。
    • 叫用com.adobe.idp.Document物件的copyToFile方法來擷取新檔案。

另請參閱

步驟摘要

快速入門(SOAP模式):使用Java API將HTML內容轉換為PDF檔案

包含AEM Forms Java程式庫檔案

設定連線屬性

使用Web服務API將PDF檔案轉換為RTF檔案 convert-a-pdf-document-to-a-rtf-file-using-the-web-service-api

使用產生PDFAPI (Web服務)將PDF檔案轉換為RTF檔案:

  1. 包含專案檔案。

    建立使用MTOM的Microsoft .NET專案。 確定您使用下列WSDL定義: http://localhost:8080/soap/services/GeneratePDFService?WSDL&lc_version=9.0.1

    note note
    NOTE
    localhost取代為主控AEM Forms之伺服器的IP位址。
  2. 建立「產生PDf」使用者端。

    • 使用預設建構函式建立GeneratePDFServiceClient物件。

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

    • 取得GeneratePDFServiceClient.Endpoint.Binding欄位的值,以建立System.ServiceModel.BasicHttpBinding物件。 將傳回值轉換為BasicHttpBinding

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

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

      • 將AEM表單使用者名稱指派給欄位GeneratePDFServiceClient.ClientCredentials.UserName.UserName
      • 將對應的密碼值指派給欄位GeneratePDFServiceClient.ClientCredentials.UserName.Password
      • 將常數值HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 將常數值BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode
  3. 擷取要轉換的PDF檔案。

    • 使用物件的建構函式建立BLOB物件。 BLOB物件是用來儲存已轉換的PDF檔案。
    • 建立System.IO.FileStream物件,方法為叫用其建構函式,並傳遞代表PDF檔案檔案位置和開啟檔案的模式的字串值。
    • 建立位元組陣列以儲存System.IO.FileStream物件的內容。 您可以取得System.IO.FileStream物件的Length屬性來決定位元組陣列的大小。
    • 呼叫System.IO.FileStream物件的Read方法,並傳遞要讀取的位元組陣列、起始位置和資料流長度,以資料流資料填入位元組陣列。
    • 將位元組陣列的內容指派給其MTOM屬性,以填入BLOB物件。
  4. 轉換PDF檔案。

    叫用GeneratePDFServiceServiceWse物件的ExportPDF2方法,並傳遞下列值:

    • 代表要轉換之PDF檔案的BLOB物件。
    • 包含要轉換之檔案的路徑名稱的字串。
    • 指定檔案位置的java.lang.String物件。
    • 字串物件,指定轉換的目標檔案型別。 指定RTF
    • 選擇性的BLOB物件,其中包含產生PDF檔案時要套用的設定。
    • ExportPDF2方法填入的型別BLOB的輸出引數。 ExportPDF2方法會將轉換的檔案填入此物件中。 (只有Web服務呼叫才需要此引數值)。
  5. 儲存轉換的檔案。

    • BLOB物件的MTOM欄位指派給位元組陣列,以擷取轉換的RTF檔案。 位元組陣列代表轉換的RTF檔案。 請確定您使用用作ExportPDF2方法之輸出引數的BLOB物件。
    • 透過叫用它的建構函式來建立System.IO.FileStream物件。 傳遞代表RTF檔案位置的字串值。
    • 透過叫用它的建構函式並傳遞System.IO.FileStream物件來建立System.IO.BinaryWriter物件。
    • 呼叫System.IO.BinaryWriter物件的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入RTF檔案。

另請參閱

步驟摘要

使用MTOM叫用AEM Forms

使用SwaRef叫用AEM Forms

新增對其他原生檔案格式的支援 adding-support-for-additional-native-file-formats

本節說明如何新增對其他原生檔案格式的支援。 它提供「產生PDF」服務與此服務用來將原生檔案格式轉換為PDF的原生應用程式之間的互動概述。

本節也說明下列內容:

  • 如何修改產生PDF服務提供給此產品已用來將原生檔案格式轉換為PDF的原生應用程式的回應
  • 「產生PDF」服務、「產生PDF服務應用程式監視器」(AppMon)元件與原生應用程式(例如Microsoft Word)之間的互動
  • XML文法在這些互動中所扮演的角色

元件互動 component-interactions

「產生PDF」服務會透過叫用與檔案格式關聯的應用程式,然後與應用程式互動以使用預設印表機列印檔案,來轉換原生檔案格式。 預設印表機必須設定為Adobe PDF印表機。

此圖例顯示與原生應用程式支援相關的元件和驅動程式。 它也提到了影響互動的XML文法。

原生檔案轉換的元件互動

此檔案使用術語​ 原生應用程式 ​來表示用於產生原生檔案格式的應用程式,例如Microsoft Word。

AppMon ​是企業元件,會以使用者瀏覽該應用程式顯示的對話方塊的方式與原生應用程式互動。 AppMon用來指示應用程式(例如Microsoft Word)開啟和列印檔案的XML文法,包括下列循序工作:

  1. 透過選取「檔案」>「開啟」來開啟檔案
  2. 確定出現「開啟」對話方塊;如果沒有,則處理錯誤
  3. 在「檔案名稱」欄位中提供檔案名稱,然後按一下「開啟」按鈕
  4. 確定檔案實際開啟
  5. 透過選取「檔案」>「列印」來開啟「列印」對話方塊
  6. 確定顯示列印對話方塊

AppMon使用標準的Win32 API與協力廠商應用程式互動,以傳輸UI事件(例如按鍵與滑鼠點按),這有助於控制這些應用程式以從中產生PDF檔案。

由於這些Win32 API的限制,AppMon無法將這些UI事件分派到某些特定型別的視窗,例如浮動選單列(可在某些應用程式如TextPad中找到)以及某些型別的對話方塊,無法使用Win32 API擷取其內容。

透過視覺化檢查可輕鬆識別浮動功能表列;但僅透過視覺化檢查可能無法識別特殊對話方塊型別。 您需要協力廠商應用程式,例如Microsoft Spy++ (Microsoft Visual C++開發環境的一部分)或其同等的WinID (可從https://www.dennisbabkin.com/php/download.php?what=WinID免費下載),來檢查對話方塊,以判斷AppMon是否能夠使用標準Win32 API與其互動。

如果WinID能夠擷取對話方塊內容(例如文字、子視窗、視窗類別ID等),則AppMon也能夠執行相同的動作。

此表格列出列印原生檔案格式時所使用的資訊型別。

資訊型別
說明
修改/建立與原生檔案相關的專案
管理設定

包括PDF設定、安全性設定和檔案型別設定。

檔案型別設定會將副檔名與對應的原生應用程式相關聯。 檔案型別設定也指定用於列印原生檔案的原生應用程式設定。

若要變更已支援原生應用程式的設定,系統管理員會在管理主控台中設定「檔案型別設定」。

若要新增對新的原生檔案格式的支援,您必須手動編輯檔案。 (請參閱新增或修改原生檔案格式的支援。)

指令碼

指定產生PDF服務與原生應用程式之間的互動。 這類互動通常會引導應用程式將檔案列印至Adobe PDF驅動程式。

指令碼包含指示原生應用程式開啟特定對話方塊,以及針對這些對話方塊中的欄位和按鈕提供特定回應的指示。

產生PDF服務包含所有支援原生應用程式的指令碼檔案。 您可以使用XML編輯應用程式來修改這些檔案。

若要新增新原生應用程式的支援,您必須建立指令碼檔案。 (請參閱為原生應用程式建立或修改其他對話方塊XML檔案。)

一般對話方塊指示

指定如何回應多個應用程式通用的對話方塊。 這類對話方塊是由作業系統、輔助應用程式(例如PDFMaker)和驅動程式所產生。

包含此資訊的檔案是appmon.global.en_US.xml。

請勿修改此檔案。
應用程式專用對話方塊指示

指定如何回應應用程式專用的對話方塊。

包含此資訊的檔案為appmon。'[appname]'.dialog。'[locale]'.xml (例如appmon.word.en_US.xml)。

請勿修改此檔案。

若要新增原生應用程式的對話方塊指示,請參閱建立或修改原生應用程式的其他對話方塊XML檔案

其他應用程式專用對話方塊指示

指定應用程式特定對話方塊指示的覆寫和新增專案。 區段會提供這類資訊的範例。

包含此資訊的檔案為appmon。'[appname]'.addition.'[locale]'.xml。 例如appmon.addition.en_US.xml。

可以使用XML編輯應用程式來建立及修改此型別的檔案。 (請參閱為原生應用程式建立或修改其他對話方塊XML檔案。)

重要:針對伺服器將支援的每個原生應用程式,建立其他應用程式專屬對話方塊指示。

關於指令碼和對話方塊XML檔案 about-the-script-and-dialog-xml-files

指令碼XML檔案指示產生PDF服務透過應用程式對話方塊進行瀏覽,就像使用者透過應用程式對話方塊進行瀏覽一樣。 指令碼XML檔案也指示「產生PDF」服務透過執行如按按鈕、選取或取消選取核取方塊或選取功能表專案等動作來回應對話方塊。

相對地,對話方塊XML檔案只會以指令碼XML檔案中使用的相同動作型別來回應對話方塊。

對話方塊和視窗元素術語 dialog-box-and-window-element-terminology

本節和下一節會根據所說明的透視使用不同術語來表示對話方塊及其包含的元件。 對話方塊元件是按鈕、欄位和組合方塊等專案。

當本節和下一節從使用者的角度描述對話方塊及其元件時,會使用​ 對話方塊按鈕欄位 ​和​ 組合方塊 ​等詞語。

當本節和下一節從內部表示的角度描述對話方塊及其元件時,會使用術語​ 視窗元素。 視窗元素的內部表示是一種階層,其中每個視窗元素例項都由標籤標識。 視窗元素例項也描述其實體特性和行為。

從使用者的角度來看,對話方塊及其元件會顯示不同的行為,其中某些對話方塊元素會隱藏直到啟動。 從內部表示的觀點來看,不存在這樣的行為問題。 例如,對話方塊的內部表示看起來與其所包含元件的表示類似,但元件會巢狀化於對話方塊內。

本節說明為AppMon提供指示的XML元素。 這些元素具有dialog元素和window元素之類的名稱。 本檔案使用等寬字型來區分XML元素。 dialog專案會識別XML指令碼檔案可能導致的對話方塊,無論是有意還是無意的顯示。 window元素識別視窗元素(對話方塊或對話方塊的元件)。

階層 hierarchy

此圖表顯示指令碼和對話方塊XML的階層。 指令碼XML檔案符合script.xsd架構,其中包括(在XML意義中) window.xsd架構。 同樣地,對話方塊XML檔案符合dialogs.xsd綱要,其中也包含window.xsd綱要。

as_as_xml_hierarchy

指令碼和對話方塊XML的階層

指令碼XML檔案 script-xml-files

指令碼XML檔案 ​指定了一系列步驟,指示原生應用程式瀏覽至特定視窗元素,然後提供這些元素的回應。 大多數回應是文字或按鍵,對應到使用者提供給對應對話方塊中的欄位、下拉式方塊或按鈕的輸入。

產生PDF服務支援指令碼XML檔案的目的是指示原生應用程式列印原生檔案。 不過,指令碼XML檔案可用於完成使用者在與原生應用程式的對話方塊互動時可執行的任何工作。

指令碼XML檔案中的步驟會依序執行,不會有任何分支機會。 唯一支援的條件式測試是逾時/重試,如果步驟在特定時間內未成功完成且在經過特定次數的重試之後,會導致指令碼終止。

除了循序的步驟外,步驟中的指示也會依序執行。 確保步驟和指示反映使用者執行這些相同步驟的順序。

指令碼XML檔案中的每個步驟都會識別在成功執行步驟指示時預期出現的視窗元素。 如果執行指令碼步驟時出現未預期的對話方塊,則產生PDF服務會依照下一節所述搜尋對話方塊XML檔案。

對話方塊XML檔案 dialog-xml-files

執行原生應用程式會顯示不同的對話方塊,無論原生應用程式是處於可見模式還是隱藏模式,都會顯示這些對話方塊。 對話方塊可由作業系統或應用程式本身產生。 當原生應用程式在產生PDF服務的控制下執行時,系統和原生應用程式對話方塊會顯示在隱藏的視窗中。

對話方塊XML檔案 ​指定產生PDF服務如何回應系統或原生應用程式對話方塊。 對話方塊XML檔案允許「產生PDF」服務以有助於轉換過程的方式回應未提示的對話方塊。

當系統或原生應用程式顯示目前執行的指令碼XML檔案未處理的對話方塊時,產生PDF服務會依此順序搜尋對話方塊XML檔案,並在找到相符專案時停止:

  • appmon。[appname].其他。[locale].xml
  • appmon。[appname][locale].xml (請勿修改此檔案。)
  • appmon.global.[locale].xml (請勿修改此檔案。)

如果「產生PDF」服務找到對話方塊的相符專案,會透過傳送按鍵或對話方塊指定的其他動作來解除該專案。 如果對話方塊的指示指定了中止訊息,則產生PDF服務會終止目前執行的工作並產生錯誤訊息。 在指令碼XML文法的abortMessage元素中會指定此類中止訊息。

如果「產生PDF」服務遇到的對話方塊未在先前列出的任何檔案中說明,則「產生PDF」服務會將該對話方塊的註解併入日誌檔專案中。 目前執行的工作最終逾時。 然後,您可以使用日誌檔案中的資訊,在原生應用程式的額外對話方塊XML檔案中撰寫新指示。

新增或修改對原生檔案格式的支援 adding-or-modifying-support-for-a-native-file-format

本節說明支援其他原生檔案格式或修改已支援之原生檔案格式的支援所必須執行的工作。

您必須先完成下列作業,才能新增或修改支援。

選擇用來識別視窗元素的工具 choosing-a-tool-for-identifying-window-elements

對話方塊和指令碼XML檔案需要您識別對話方塊或指令碼元素所回應的視窗元素(對話方塊、欄位或其他對話方塊元件)。 例如,指令碼叫用原生應用程式的功能表後,指令碼必須識別該功能表上的視窗元素,以便套用按鍵或動作。

您可以透過對話方塊標題列中顯示的註解輕鬆識別對話方塊。 不過,您必須使用Microsoft Spy++之類的工具來識別較低層級的視窗元素。 較低層級的視窗元素可透過各種屬性來識別,這些屬性並不明顯。 此外,每個原生應用程式可能會以不同的方式識別其視窗元素。 因此,有多種方法可以識別視窗元素。 以下是考量視窗元素識別的建議順序:

  1. 註解本身(如果它是唯一的)
  2. 控制項ID,對於指定的對話方塊可能不是唯一的,也可能不是唯一的
  3. 類別名稱,不一定是唯一的

您可以使用這三個屬性的任一或組合來識別視窗。

如果屬性無法識別註解,您可以改為使用相對於其父項的索引來識別視窗元素。 index ​指定視窗元素相對於其同層級視窗元素的位置。 通常,索引是識別組合方塊的唯一方法。

請注意下列問題:

  • Microsoft Spy會使用&符號來識別註解的熱鍵,以顯示註解。 例如,Spy將一個「列印」對話方塊的標題顯示為Pri&nt,表示快速鍵是​ n。 指令碼和對話方塊XML檔案中的標題必須省略&符號。
  • 部分註解包含分行符號。 「產生PDF」服務無法識別分行符號。 如果註解包含分行符號,請包含足夠的註解以與其他選單專案區分開來,然後對省略的零件使用規則運算式。 範例為( ^Long caption title$)。 (請參閱在註解屬性中使用規則運算式。)
  • 針對保留的XML字元使用字元實體(也稱為逸出序列)。 例如,使用&代表&符號,<>代表小於和大於符號,&apos;代表單引號,&quot;代表雙引號。

如果您打算使用對話方塊或指令碼XML檔案,則應安裝應用程式Microsoft Spy++。

解除封裝對話方塊和指令碼檔案 unpackaging-the-dialog-and-script-files

對話方塊和指令碼檔案位於appmondata.jar檔案中。 您必須先取消封裝這個JAR檔案,才能修改這些檔案中的任何一個,或是加入新的指令碼或對話方塊檔案。 例如,假設您要新增對EditPlus應用程式的支援。 您可以建立兩個XML檔案,名為appmon.editplus.script.en_US.xml和appmon.editplus.script.addition.en_US.xml。 這些XML指令碼必須新增至adobe-appmondata.jar檔案的兩個位置,如下所示:

  • adobe-livecycle-native-jboss-x86_win32.ear > adobe-Native2PDFSvc.war\WEB-INF\lib > adobe-native.jar > Native2PDFSvc-native.jar\bin > adobe-appmondata.jar\com\adobe\appmon。 adobe-livecycle-native-jboss-x86_win32.ear檔案位於匯出資料夾[AEM forms install directory]\configurationManager。 (如果將AEM Forms部署在其他J2EE應用程式伺服器上,請將adobe-livecycle-native-jboss-x86_win32.ear檔案取代為對應至J2EE應用程式伺服器的EAR檔案。)
  • adobe-generatepdf-dsc.jar > adobe-appmondata.jar\com\adobe\appmon (adobe-appmondata.jar檔案位於adobe-generatepdf-dsc.jar檔案中)。 adobe-generatepdf-dsc.jar檔案位於[AEM forms install directory]\deploy資料夾中。

將這些XML檔案新增至adobe-appmondata.jar檔案後,您必須重新部署GeneratePDF元件。 若要將對話方塊和指令碼XML檔案新增至adobe-appmondata.jar檔案,請執行下列工作:

  1. 使用WinZip或WinRAR之類的工具,開啟adobe-livecycle-native-jboss-x86_win32.earfile > adobe-Native2PDFSvc.war\WEB-INF\lib > adobe-native.jar > Native2PDFSvc-native.jar\bin > adobe-appmondata.jar檔案。
  2. 將對話方塊和指令碼XML檔案新增至appmondata.jar檔案,或修改此檔案中現有的XML檔案。 (請參閱建立或修改原生應用程式的指令碼XML檔案建立或修改原生應用程式的額外對話方塊XML檔案。)
  3. 使用WinZip或WinRAR等工具,開啟adobe-generatepdf-dsc.jar > adobe-appmondata.jar。
  4. 將對話方塊和指令碼XML檔案新增至appmondata.jar檔案,或修改此檔案中現有的XML檔案。 (請參閱建立或修改原生應用程式的指令碼XML檔案建立或修改原生應用程式的額外對話方塊XML檔案。) 將XML檔案新增至adobe-appmondata.jar檔案後,請將新的adobe-appmondata.jar檔案置於adobe-generatepdf-dsc.jar檔案中。
  5. 如果您新增其他原生檔案格式的支援,請建立提供應用程式路徑的系統環境變數(請參閱建立環境變數以找出原生應用程式)。

重新部署GeneratePDF元件

  1. 登入Workbench。
  2. 選取​ 視窗 > 顯示檢視 > 元件。 此動作會將「元件」檢視新增至Workbench。
  3. 用滑鼠右鍵按一下GeneratePDF元件,然後選取​ 停止元件
  4. 當元件停止時,按一下滑鼠右鍵並選取「解除安裝元件」來移除元件。
  5. 在​ 元件 ​圖示上按一下滑鼠右鍵,然後選取​ 安裝元件
  6. 瀏覽並選取修改過的adobe-generatepdf-dsc.jar檔案,然後按一下「開啟」。 請注意,GeneratePDF元件旁會出現紅色方塊。
  7. 展開GeneratePDF元件,選取「服務描述元」,然後以滑鼠右鍵按一下「產生PDF服務」,並選取「啟動服務」。
  8. 在出現的組態對話方塊中,輸入適用的組態值。 如果您將這些值留白,則會使用預設的設定值。
  9. 用滑鼠右鍵按一下「產生PDF」並選取「啟動元件」。
  10. 展開Active Services。 如果服務名稱正在執行,其旁邊會顯示綠色箭頭。 否則,服務會處於停止狀態。
  11. 如果服務處於停止狀態,請用滑鼠右鍵按一下服務名稱,然後選取啟動服務。

建立或修改原生應用程式的指令碼XML檔案 creating-or-modifying-a-script-xml-file-for-a-native-application

如果要將檔案導向新的原生應用程式,則必須為該應用程式建立指令碼XML檔案。 如果您要修改「產生PDF」服務與已受支援的原生應用程式互動的方式,則必須修改該應用程式的指令碼。

指令碼包含瀏覽原生應用程式的視窗元素以及提供這些元素特定回應的指示。 包含此資訊的檔案是appmon.[appname]" .script.[地區設定].xml。 例如appmon.notepad.script.en_US.xml。

識別指令碼必須執行的步驟 identifying-steps-the-script-must-execute

使用原生應用程式,決定您必須瀏覽的視窗元素,以及列印檔案時必須執行的每個回應。 請注意任何回應所產生的對話方塊。 這些步驟將類似於以下步驟:

  1. 選取「檔案」>「開啟」。
  2. 指定路徑,然後按一下「開啟」。
  3. 在功能表列上選取「檔案>列印」。
  4. 指定印表機所需的屬性。
  5. 選取「列印」,並等待「另存新檔」對話方塊出現。 「產生PDF」服務必須有「另存新檔」對話方塊,才能指定PDF檔案的目的地。

識別註解屬性中指定的對話方塊 identifying-the-dialogs-specified-in-caption-attributes

使用Microsoft Spy++取得原生應用程式中視窗元素屬性的身分識別。 您必須具備這些身分才能撰寫指令碼。

在註解屬性中使用規則運算式 using-regular-expressions-in-caption-attributes

您可以在註解規格中使用規則運算式。 產生PDF服務使用java.util.regex.Matcher類別來支援規則運算式。 該公用程式支援java.util.regex.Pattern中描述的規則運算式。

包含記事本橫幅中記事本前置檔案名稱的規則運算式

 <!-- The regular expression ".*Notepad" means any number of non-terminating characters followed by Notepad. -->
 <step>
     <expectedWindow>
         <window caption=".*Notepad"/>
     </expectedWindow>
 </step>

區分列印與列印設定的規則運算式

 <!-- This regular expression differentiates the Print dialog box from the Print Setup dialog box. The "^" specifies the beginning of the line, and the "$" specifies the end of the line. -->
 <windowList>
     <window controlID="0x01" caption="^Print$" action="press"/>
 </windowList>

排序視窗和windowList元素 ordering-the-window-and-windowlist-elements

windowwindowList元素排序如下:

  • 當多個window元素在windowListdialog元素中顯示為子系時,請以遞減順序來排序這window個元素,其中caption個名稱的長度表示順序中的位置。
  • 當多個windowList元素出現在window元素中時,請以遞減順序將這些windowList元素排序,並使用第一個indexes/元素的caption屬性長度指示順序中的位置。

排序對話方塊檔案中的視窗專案

 <!-- The caption attribute in the following window element is 40 characters long. It is the longest caption in this example, so its parent window element appears before the others. -->
 <window caption="Unexpected Failure in DebugActiveProcess">
     <…>
 </window>

 <!-- Caption length is 33 characters. -->
 <window caption="Adobe Acrobat - License Agreement">
     <…>
 </window>

 <!-- Caption length is 33 characters. -->
 <window caption="Microsoft Visual.*Runtime Library">
     <…>
 </window>

 <!-- The caption attribute in the following window element is 28 characters long. It is the shortest caption in this example, so its parent window element appears after the others. -->
 <window caption="Adobe Acrobat - Registration">
     <…>
 </window>

在windowList元素中排序視窗元素

 <!-- The caption attribute in the following indexes element is 56 characters long. It is the longest caption in this example, so its parent window element appears before the others. -->
 <windowList>
     <window caption="Can&apos;t exit design mode because.* cannot be created"/>
     <window className="Button" caption="OK" action="press"/>
 </windowList>
 <windowList>
     <window caption="Do you want to continue loading the project?"/>
     <window className="Button" caption="No" action="press"/>
 </windowList>
 <windowList>
     <window caption="The macros in this project are disabled"/>
     <window className="Button" caption="OK" action="press"/>
 </windowList>

為原生應用程式建立或修改其他對話方塊XML檔案 creating-or-modifying-an-additional-dialog-xml-file-for-a-native-application

如果您為先前不支援的原生應用程式建立指令碼,則還必須為該應用程式建立額外的對話方塊XML檔案。 AppMon使用的每個原生應用程式只能有一個額外的對話方塊XML檔案。 即使沒有不需要的對話方塊,也需要其他對話方塊XML檔案。 其他對話方塊必須至少有一個window元素,即使該window元素只是預留位置。

NOTE
在此內容中,額外一詞表示appmon.[applicationname].addition.[locale].xml檔案的內容。 這類檔案會指定對話方塊XML檔案的覆寫和新增專案。

您也可以針對下列用途修改原生應用程式的其他對話方塊XML檔案:

  • 覆寫具有不同回應的應用程式之對話方塊XML檔案
  • 若要將回應加入到該應用程式的對話方塊XML檔案中未指定的對話方塊

識別其他dialogXML檔案的檔案名稱為appmon.[appname].addition.[locale].xml。 例如appmon.excel.addition.en_US.xml。

其他對話方塊XML檔案的名稱必須使用格式appmon.[applicationname].addition.[locale].xml,其中​ applicationname ​必須完全符合XML組態檔和指令碼中使用的應用程式名稱。

NOTE
native2pdfconfig.xml組態檔中指定的泛型應用程式都沒有主要對話方塊XML檔案。 新增或修改原生檔案格式支援一節說明這類規格。

排序在window元素中顯示為子系的windowList元素。 (請參閱排序視窗和windowList專案。)

修改一般對話方塊XML檔案 modifying-the-general-dialog-xml-file

您可以修改一般對話方塊XML檔案,以回應系統產生的對話方塊,或回應多個應用程式通用的對話方塊。

在XML組態檔中新增檔案型別專案 adding-a-filetype-entry-in-the-xml-configuration-file

此程式說明如何更新「產生PDF」服務組態檔,以將檔案型別與原生應用程式相關聯。 若要更新此組態檔,您必須使用管理主控台將組態資料匯出至檔案。 組態資料的預設檔案名稱為native2pdfconfig.xml。

更新產生PDF服務組態檔

  1. 選取​ 首頁 > 服務 > Adobe PDF Generator > 組態檔,然後選取​ 匯出組態
  2. 視需要修改native2pdfconfig.xml檔案中的filetype-settings專案。
  3. 選取​ 首頁 > 服務 > Adobe PDF產生器 >組態檔,然後選取​ 匯入組態。 組態資料會匯入產生PDF服務,取代先前的設定。
NOTE
應用程式的名稱指定為GenericApp專案的name屬性值。 此值必須與您為該應用程式開發的指令碼中指定的對應名稱完全相符。 同樣地,GenericApp專案的displayName屬性應該完全符合對應指令碼的expectedWindow視窗標題。 在解析displayNamecaption屬性中出現的任何規則運算式之後,會評估這種等同性。

在此範例中,已修改產生PDF服務所提供的預設設定資料,以指定應使用記事本(而非Microsoft Word)來處理副檔名為.txt的檔案。 在此修改之前,Microsoft Word被指定為應該處理此類檔案的原生應用程式。

將文字檔導向至記事本(native2pdfconfig.xml)的修改

 <filetype-settings>

 <!-- Some native app file types were omitted for brevity. -->
 <!-- The following GenericApp element specifies Notepad as the native application that should be used to process files that have a txt file name extension. -->
             <GenericApp
                 extensions="txt"
                 name="Notepad" displayName=".*Notepad"/>
             <GenericApp
                 extensions="wpd"
                 name="WordPerfect" displayName="Corel WordPerfect"/>
             <GenericApp extensions="pmd,pm6,p65,pm"
                 name="PageMaker" displayName="Adobe PageMaker"/>
             <GenericApp extensions="fm"
                 name="FrameMaker" displayName="Adobe FrameMaker"/>
             <GenericApp extensions="psd"
                 name="Photoshop" displayName="Adobe Photoshop"/>
         </settings>
     </filetype-settings>

建立環境變數以找出原生應用程式 creating-an-environment-variable-to-locate-the-native-application

建立環境變數,指定原生應用程式可執行檔的位置。 變數必須使用格式[applicationname]_PATH,其中​ applicationname ​必須完全符合XML組態檔和指令碼中使用的應用程式名稱,而且路徑包含以雙引號表示的可執行檔路徑。 此類環境變數的範例為Photoshop_PATH

建立新的環境變數後,您必須重新啟動部署產生PDF服務的伺服器。

NOTE
建議您使用'Ctrl + C'命令重新啟動SDK伺服器。 使用替代方法重新啟動AEM SDK伺服器(例如停止Java程式)可能會導致AEM開發環境不一致。

在Windows XP環境中建立系統變數

  1. 選取​ 控制檯>系統
  2. 在[系統內容]對話方塊中,按一下[進階]索引標籤​ ,然後按一下[環境變數]​
  3. 在「環境變數」對話方塊的「系統變數」下,按一下「新增」。
  4. 在「新增系統變數」對話方塊的​ 變數名稱 ​方塊中,輸入使用格式[applicationname]_PATH的名稱。
  5. 在​ 變數值 ​方塊中,輸入應用程式可執行檔的完整路徑與檔案名稱,然後按一下​ 確定。 例如,型別: c:\windows\Notepad.exe
  6. 在[環境變數]對話方塊中,按一下[確定]。

從命令列建立系統變數

  1. 在命令列視窗中,使用此格式輸入變數定義:

    code language-shell
             [applicationname]_PATH=[Full path name]
    

    例如,型別: NotePad_PATH=C:\WINDOWS\NOTEPAD.EXE

  2. 啟動新的命令列提示讓系統變數生效。

XML檔案 xml-files

AEM Forms包含範例XML檔案,可讓「產生PDF」服務使用「記事本」處理任何副檔名為.txt的檔案。 此程式碼包含在本節中。 此外,您必須進行本節所述的其他修改。

其他對話方塊XML檔案 additional-dialog-xml-file

此範例包含記事本應用程式的其他對話方塊。 除了產生PDF服務所指定的對話方塊之外,還可以使用這些對話方塊。

記事本對話方塊(appmon.notepad.addition.en_US.xml)

 <dialogs app="Notepad" locale="en_US" version="7.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="dialogs.xsd">
     <window caption="Caption Title">
         <windowList>
             <window className="Button" caption="OK" action="press"/>
         </windowList>
     </window>
 </dialogs>

指令碼XML檔案 script-xml-file

此範例指定「產生PDF」服務應如何與記事本互動,以使用Adobe PDF印表機列印檔案。

記事本指令碼XML檔案(appmon.notepad.script.en_US.xml)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
*
* ADOBE CONFIDENTIAL
* ___________________
* Copyright 2004 - 2005 Adobe Systems Incorporated
* All Rights Reserved.
*
* NOTICE:  All information contained herein is, and remains
* the property of Adobe Systems Incorporated and its suppliers,
* if any.  The intellectual and technical concepts contained
* herein are proprietary to Adobe Systems Incorporated and its
* suppliers and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from Adobe Systems Incorporated.
*-->

<!-- This file automates printing of text files via notepad to Adobe PDF printer. To see the complete hierarchy Adobe recommends using the Microsoft Spy++ which details the properties of windows necessary to write scripts. In this sample there are total of eight steps-->

<application name="Notepad" version="9.0" locale="en_US" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="scripts.xsd">

    <!-- In this step we wait for the application window to appear -->
    <step>
        <expectedWindow>
            <window caption=".*Notepad"/>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the application window and send File->Open menu bar, menu item commands and the expectation is the windows Open dialog-->
    <step>
        <acquiredWindow>
            <window caption=".*Notepad">
                <virtualInput>
                    <menuBar>
                        <selection>
                            <name>File</name>
                        </selection>
                        <selection>
                            <name>Open...</name>
                        </selection>
                    </menuBar>
                </virtualInput>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Open"/>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the Open window and then select the 'Edit' widget and input the source path followed by clicking on the 'Open' button . The expectation of this 'action' is that the Open dialog will disappear -->
    <step>
        <acquiredWindow>
            <window caption="Open">
                <windowList>
                    <window className="ComboBoxEx32">
                        <windowList>
                            <window className="ComboBox">
                                <windowList>
                                <window className="Edit" action="inputSourcePath"/>
                                </windowList>
                            </window>
                        </windowList>
                    </window>
                </windowList>
                <windowList>
                    <window className="Button" caption="Open" action="press"/>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Open" action="disappear"/>
        </expectedWindow>
        <pause value="30"/>
    </step>

    <!-- In this step, we acquire the application window and send File->Print menu bar, menu item commands and the expectation is the windows Print dialog-->
    <step>
        <acquiredWindow>
            <window caption=".*Notepad">
                <virtualInput>
                    <menuBar>
                        <selection>
                            <name>File</name>
                        </selection>
                        <selection>
                            <name>Print...</name>
                        </selection>
                    </menuBar>
                </virtualInput>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Print">
        </window>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the Print dialog and click the 'Preferences' button and the expected window in this case is the dialog with the caption '"Printing Preferences' -->
    <step>
        <acquiredWindow>
            <window caption="Print">
                <windowList>
                    <window caption="General">
                        <windowList>
                            <window className="Button" caption="Preferences" action="press"/>
                        </windowList>
                    </window>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Printing Preferences"/>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the dialog "Printing Preferences' and select the combo box which is the 10th child of window with caption '"Adobe PDF Settings' and select the first index. (Note: All indeces start with 0.) Besides this we uncheck the box which has the caption '"View Adobe PDF results' and we click the button OK. The expectation is that 'Printing Preferences' dialog disappears. -->
    <step>
        <acquiredWindow>
            <window caption="Printing Preferences">
                <windowList>
                    <window caption="Adobe PDF Settings">
                        <windowList>
                            <window className="Button" caption="View Adobe PDF results" action="uncheck"/>
                        </windowList>
                        <windowList>
                            <window className="Button" caption="Ask to Replace existing PDF file" action="uncheck"/>
                        </windowList>
                    </window>
                </windowList>
                <windowList>
                    <window className="Button" caption="OK" action="press"/>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Printing Preferences" action="disappear"/>
        </expectedWindow>
    </step>

    <!-- In this step, we acquire the 'Print' dialog and click the Print button. The expectation is that the dialog with caption 'Print' disappears. In this case we use the regular expression '^Print$' for specifying the caption given there could be multiple dialogs with caption that includes the word Print. -->
    <step>
        <acquiredWindow>
            <window caption="Print">
                <windowList>
                    <window caption="General"/>
                    <window className="Button" caption="^Print$" action="press"/>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Print" action="disappear"/>
        </expectedWindow>
    </step>
    <step>
        <expectedWindow>
            <window caption="Save PDF File As"/>
        </expectedWindow>
    </step>
    <!-- Finally in this step, we acquire the dialog with caption "Save PDF File As" and in the Edit widget type the destination path for the output PDF file and click the Save button. The expectation is that the dialog disappears-->
    <step>
        <acquiredWindow>
            <window caption="Save PDF File As">
                <windowList>
                    <window className="Edit" action="inputDestinationPath"/>
                </windowList>
                <windowList>
                    <window className="Button" caption="Save" action="press"/>
                </windowList>
            </window>
        </acquiredWindow>
        <expectedWindow>
            <window caption="Save PDF File As" action="disappear"/>
        </expectedWindow>
    </step>

    <!-- We can always set a retry count or a maximum time for a step. In case we surpass these limitations, PDF Generator generates this abort message and terminates processing. -->
    <abortMessage msg="15078"/>
</application>
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2