將PDF轉換為Postscript和影像檔案

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

關於轉換PDF服務

「轉換PDF」服務將PDF文檔轉換為PostScript和多種影像格式(JPEG、JPEG 2000、PNG和TIFF)。 將PDF文檔轉換為PostScript對於在任何PostScript打印機上基於伺服器的無人值守打印非常有用。 將PDF檔案轉換為多頁TIFF檔案,在不支援PDF檔案的內容管理系統中封存檔案時非常實用。

您可以使用「轉換PDF」服務來完成下列工作:

  • 將PDF檔案轉換為PostScript。
  • 將PDF文檔轉換為影像格式。
注意

如需轉換PDF服務的詳細資訊,請參閱AEM Forms適用的服務參考

將PDF文檔轉換為PostScript

本主題說明如何使用「轉換PDF服務API(Java和Web服務)」,以程式設計方式將PDF檔案轉換為PostScript檔案。 轉換為PostScript檔案的PDF文檔必須是非互動式PDF文檔。 也就是說,如果嘗試將互動式PDF檔案轉換為PostScript檔案,則會引發例外狀況。

注意

如需轉換PDF服務的詳細資訊,請參閱AEM Forms適用的服務參考

步驟的摘要

要將PDF文檔轉換為PostScript檔案,請執行以下步驟:

  1. 包含專案檔案。
  2. 建立轉換PDF服務用戶端。
  3. 參考要轉換為PostScript檔案的PDF文檔。
  4. 設定轉換執行時間選項。
  5. 將PDF文檔轉換為PostScript檔案。
  6. 儲存PostScript檔案。

包含項目檔案

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

建立轉換PDF用戶端

必須先建立「轉換PDF」服務客戶端,才能以寫程式方式執行「轉換PDF」服務操作。 如果您使用Java API,請建立ConvertPdfServiceClient物件。 如果您使用Web服務API,請建立ConvertPDFServiceService物件。

本節使用AEM Forms中推出的網站服務功能。 若要存取新功能,您必須使用lc_version屬性來建構您的Proxy物件。 (請參閱使用網站服務叫用AEM Forms中的「使用網站服務存取新功能」。)

參考要轉換為PostScript檔案的PDF文檔

參考要轉換為PostScript檔案的PDF文檔。 如本主題前面所述,PDF文檔必須是非互動式PDF文檔。 如果嘗試將互動式PDF檔案轉換為PostScript檔案,則會引發例外狀況。

設定轉換執行時間選項

將PDF文檔轉換為PostScript檔案時,您可以定義運行時選項,以指定所建立的PostScript類型。 例如,您可以定義第3層PostScript檔案。

一般而言,產生的PostScript檔案會反映輸入PDF檔案的大小。 如果選擇ShrinkToFit選項(該選項會縮小PostScript檔案的輸出以適合頁面),則輸入的PDF文檔與生成的PostScript檔案之間將不會出現差異。 ShrinkToFit選項只有在您選擇在比輸入PDF文檔小的頁面大小上打印時才生效。 若要選取較小的頁面大小,請定義PageSize選項。 此外,建議將RotateAndCenter選項設定為true以獲得正確的PostScript輸出。

同樣,如果選擇ExpandToFit選項(展開PostScript檔案的輸出以適合頁面),則只有在選擇打印的頁面大小比輸入的PDF文檔大時,該選項才生效。 若要選取較大的頁面大小,請定義PageSize選項。 此外,建議將RotateAndCenter選項設定為true以獲得正確的PostScript輸出。

注意

如需可設定之執行階段值的詳細資訊,請參閱AEM Forms API參考中的ToPSOptionsSpec類別參考。

將PDF文檔轉換為PostScript檔案

建立服務客戶端並設定運行時選項後,可以調用PostScript轉換操作。 此操作需要有關要轉換的文檔的資訊,包括目標文檔的首選PostScript級別。

儲存PostScript檔案

將PDF文檔轉換為PostScript後,可以將輸出另存為PostScript檔案。

另請參閱

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

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

包含AEM Forms Java程式庫檔案

設定連接屬性

轉換PDF服務API快速入門

使用Java API將PDF文檔轉換為PS

使用「轉換PDF服務API(Java)」將PDF文檔轉換為PostScript:

  1. 包含專案檔案。

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

  2. 建立轉換PDF用戶端。

    • 建立包含連接屬性的ServiceClientFactory對象。
    • 使用其建構子並傳遞ServiceClientFactory物件,以建立ConvertPdfServiceClient物件。
  3. 參考要轉換為PostScript檔案的PDF文檔。

    • 使用其建構子建立java.io.FileInputStream物件,並傳遞字串值,指定要轉換的PDF檔案的位置。
    • 使用com.adobe.idp.Document建構子建立com.adobe.idp.Document物件以儲存PDF檔案。 傳遞包含PDF檔案的java.io.FileInputStream物件。
  4. 設定轉換執行時間選項。

    • 調用ToPSOptionsSpec對象的建構子以建立對象。
    • 通過調用屬於ToPSOptionsSpec對象的適當方法來設定運行時選項。 例如,要定義已建立的PostScript級別,請調用ToPSOptionsSpec對象的setPsLevel方法,並傳遞指定PostScript級別的PSLevel枚舉值。 如需可設定之所有執行階段值的相關資訊,請參閱AEM Forms API參考中的ToPSOptionsSpec類別參考。
  5. 將PDF文檔轉換為PostScript檔案。

    調用ConvertPdfServiceClient對象的toPS2方法並傳遞以下值:

    • 代表要轉換為PostScript檔案的PDF文檔的com.adobe.idp.Document對象。
    • ToPSOptionsSpec對象,指定PostScript運行時選項。

    toPS2方法返回包含新PostScript文檔的Document對象。

  6. 儲存PostScript檔案。

    • 建立java.io.File物件,並確定副檔名為.ps。
    • 調用Document對象的copyToFile方法,將Document對象的內容複製到檔案(確保使用toPS2方法返回的Document對象)。

另請參閱

步驟摘要

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

包含AEM Forms Java程式庫檔案

設定連接屬性

使用Web服務API將PDF文檔轉換為PS

使用「轉換PDF服務API(Web服務)」將PDF文檔轉換為PostScript:

  1. 包含專案檔案。

    建立使用MTOM的Microsoft .NET項目。 確保使用以下WSDL定義:http://localhost:8080/soap/services/ConvertPDFService?WSDL&lc_version=9.0.1

    注意

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

  2. 建立轉換PDF用戶端。

    • 使用其預設建構子建立ConvertPdfServiceClient物件。

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

    • 獲取ConvertPdfServiceClient.Endpoint.Binding欄位的值,建立System.ServiceModel.BasicHttpBinding對象。 將傳回值轉換為BasicHttpBinding

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

    • 通過執行以下任務來啟用基本HTTP身份驗證:

      • 將AEM表單使用者名稱指派給欄位ConvertPdfServiceClient.ClientCredentials.UserName.UserName
      • 將相應的密碼值分配給欄位ConvertPdfServiceClient.ClientCredentials.UserName.Password
      • 將常數值HttpClientCredentialType.Basic指派給欄位BasicHttpBindingSecurity.Transport.ClientCredentialType
      • 將常數值BasicHttpSecurityMode.TransportCredentialOnly指派給欄位BasicHttpBindingSecurity.Security.Mode
  3. 參考要轉換為PostScript檔案的PDF文檔。

    • 使用其建構子建立BLOB物件。 BLOB對象用於儲存轉換為PostScript檔案的PDF文檔。
    • 通過調用其建構子並傳遞一個字串值來建立System.IO.FileStream對象,該字串值表示要轉換的PDF文檔的檔案位置,以及在中開啟檔案的模式。
    • 建立儲存System.IO.FileStream對象內容的位元組陣列。 通過獲取System.IO.FileStream對象的Length屬性,可以確定位元組陣列的大小。
    • 調用System.IO.FileStream對象的Read方法並傳遞要讀取的位元組陣列、起始位置和流長度,以流資料填充位元組陣列。
    • MTOM欄位指定位元組陣列的內容,以填入BLOB物件。
  4. 設定轉換執行時間選項。

    • 調用ToPSOptionsSpec對象的建構子以建立對象。
    • 通過為ToPSOptionsSpec對象的資料成員分配值來設定運行時選項。 例如,要定義已建立的PostScript級別,請將PSLevel枚舉值分配給ToPSOptionsSpec對象的psLevel資料成員。
  5. 將PDF文檔轉換為PostScript檔案。

    調用GeneratePDFServiceService對象的toPS2方法並傳遞以下值:

    • 代表要轉換為PostScript檔案的PDF文檔的BLOB對象
    • 指定運行時選項的ToPSOptionsSpec對象

    轉換完成後,通過訪問其BLOB對象的MTOM屬性來提取表示PostScript文檔的二進位資料。 這會傳回位元組陣列,您可將其寫出至PostScript檔案。

  6. 儲存PostScript檔案。

    • 調用System.IO.FileStream對象的建構子以建立對象。 傳遞代表PS檔案檔案位置的字串值。
    • 建立位元組陣列,用於儲存encryptPDFUsingPassword方法返回的BLOB對象的資料內容。 獲取BLOB對象的MTOM欄位的值,填入位元組陣列。
    • 通過調用其建構子並傳遞System.IO.FileStream對象來建立System.IO.BinaryWriter對象。
    • 調用System.IO.BinaryWriter對象的Write方法並傳遞位元組陣列,將位元組陣列的內容寫入PostScript檔案。

另請參閱

步驟摘要

使用MTOM叫用AEM Forms

使用SwaRef叫用AEM Forms

將PDF文檔轉換為影像格式

您可以使用「轉換PDF」服務,以寫程式方式將PDF文檔轉換為影像格式,包括JPEG、JPEG 2000、TIFF和PNG。 通過將PDF文檔轉換為影像檔案,可以將PDF文檔用作影像檔案。 例如,您可以將映像放置在企業內容管理系統中以進行儲存。

將PDF文檔轉換為影像時,「轉換PDF」服務會為文檔中的每一頁建立單獨的影像。 也就是說,如果文檔有20頁,則「轉換PDF」服務將建立20個影像檔案。 將PDF文檔轉換為影像格式時,可以為PDF文檔內的每頁建立單個影像,也可以為整個PDF文檔建立單個影像檔案。

注意

如需轉換PDF服務的詳細資訊,請參閱AEM Forms適用的服務參考

步驟的摘要

要將PDF文檔轉換為任何支援的類型,請執行以下步驟:

  1. 包含專案檔案。
  2. 建立轉換PDF服務用戶端。
  3. 檢索要轉換的PDF文檔。
  4. 設定運行時選項。
  5. 將PDF轉換為影像。
  6. 從集合中擷取影像檔案。

包含項目檔案

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

建立轉換PDF用戶端

必須先建立「轉換PDF」服務客戶端,才能以寫程式方式執行「轉換PDF」服務操作。 如果您使用Java API,請建立ConvertPdfServiceClient物件。 如果您使用Web服務API,請建立ConvertPDFServiceService物件。

檢索要轉換的PDF文檔

必須檢索PDF文檔才能轉換為影像。 無法將互動式PDF文檔轉換為影像。 如果嘗試執行此操作,則會擲回例外。 要將互動式PDF文檔轉換為影像檔案,必須先平面化PDF文檔,然後再轉換。 (請參閱拼合PDF文檔。)

設定運行時選項

必須設定運行時選項,如影像格式和解析度值。 有關運行時值的資訊,請參閱AEM Forms API參考中的ToImageOptionsSpec類參考。

將PDF轉換為影像

建立服務客戶端並設定運行時選項後,可以將PDF文檔轉換為影像。 會傳回包含影像的集合物件。

從集合中擷取影像檔案

您可以從轉換PDF服務傳回的集合物件擷取影像檔案。 集合中的每個元素都是一個com.adobe.idp.Document例項(如果您使用Web服務,則為BLOB例項),可儲存為影像檔案,例如JPG檔案。

影像檔案的格式取決於ImageConvertFormat運行時選項。 也就是說,如果將ImageConvertFormat運行時選項設定為ImageConvertFormat.JPEG,則可以將影像檔案另存為JPG檔案。

另請參閱

包含AEM Forms Java程式庫檔案

設定連接屬性

轉換PDF服務API快速入門

使用Java API將PDF文檔轉換為影像檔案

使用「轉換PDF服務API(Java)」將PDF文檔轉換為影像格式:

  1. 包含專案檔案。

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

  2. 建立轉換PDF用戶端。

    • 建立包含連接屬性的ServiceClientFactory對象。
    • 使用其建構子並傳遞ServiceClientFactory物件,以建立ConvertPdfServiceClient物件。
  3. 檢索要轉換的PDF文檔。

    • 建立一個java.io.FileInputStream對象,該對象表示要轉換的PDF文檔,方法是使用其建構子並傳遞一個字串值,該字串值指定PDF文檔的位置。
    • 使用其建構子並傳遞java.io.FileInputStream物件,以建立com.adobe.idp.Document物件。
  4. 設定運行時選項。

    • 使用其建構子建立ToImageOptionsSpec物件。
    • 根據需要調用屬於此對象的方法。 例如,通過調用setImageConvertFormat方法並傳遞指定格式類型的ImageConvertFormat枚舉值來設定影像類型。
    注意

    必須設定ImageConvertFormat枚舉值。

  5. 將PDF轉換為影像。

    調用ConvertPdfServiceClient對象的toImage2方法並傳遞以下值:

    • 代表要轉換的PDF檔案的com.adobe.idp.Document物件。
    • com.adobe.livecycle.converpdfservice.client.ToImageOptionsSpec物件,包含關於目標影像格式的各種偏好設定。

    toImage2方法返回包含影像的java.util.List對象。 集合中的每個元素都是com.adobe.idp.Document例項。

  6. 從集合中擷取影像檔案。

    逐一查看java.util.List物件,以判斷影像是否存在。 每個元素都是com.adobe.idp.Document例項。 叫用com.adobe.idp.Document物件的copyToFile方法並傳遞java.io.File物件,以儲存影像。

另請參閱

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

使用Web服務API將PDF文檔轉換為影像檔案

使用「轉換PDF服務API(Web服務)」將PDF文檔轉換為影像格式:

  1. 包含專案檔案。

    建立使用MTOM的Microsoft .NET項目。 確保使用以下WSDL定義:http://localhost:8080/soap/services/ConvertPDFService?WSDL&lc_version=9.0.1

    注意

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

  2. 建立轉換的PDF客戶端。

    • 使用其預設建構子建立ConvertPdfServiceClient物件。

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

    • 獲取ConvertPdfServiceClient.Endpoint.Binding欄位的值,建立System.ServiceModel.BasicHttpBinding對象。 將傳回值轉換為BasicHttpBinding

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

    • 通過執行以下任務來啟用基本HTTP身份驗證:

      • 將AEM表單使用者名稱指派給欄位ConvertPdfServiceClient.ClientCredentials.UserName.UserName
      • 將相應的密碼值分配給欄位ConvertPdfServiceClient.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. 設定運行時選項。

    • 使用其建構子建立ToImageOptionsSpec物件。
    • 根據需要調用屬於此對象的方法。 例如,通過調用setImageConvertFormat方法並傳遞指定格式類型的ImageConvertFormat枚舉值來設定影像類型。
    注意

    必須設定ImageConvertFormat枚舉值。

  5. 將PDF轉換為影像。

    調用ConvertPDFServiceService對象的toImage2方法並傳遞以下值:

    • 表示要轉換的檔案的BLOB對象
    • ToImageOptionsSpec對象,包含有關目標影像格式的各種首選項

    toImage2方法返回包含新建立的影像檔案的MyArrayOfBLOB對象。

  6. 從集合中擷取影像檔案。

    • 通過獲取Count欄位的值,確定MyArrayOfBLOB對象中的元素數。 每個元素都是包含影像的BLOB物件。
    • 逐一查看MyArrayOfBLOB物件,並儲存每個影像檔案。

另請參閱

使用MTOM叫用AEM Forms

使用SwaRef叫用AEM Forms

本頁內容