將PDF轉換為Postscript和影像檔

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

關於轉換PDF服務

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

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

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

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

將PDF檔案轉換為PostScript

本主題說明如何使用轉換PDF服務API(Java和web service),以程式設計方式將PDF檔案轉換為PostScript檔案。 轉換為PostScript檔案的PDF檔案必須是非互動式PDF檔案。 也就是說,如果您嘗試將互動式PDF檔案轉換為PostScript檔案,則會擲回例外。

注意

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

步驟摘要

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

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

包含專案檔案

將必要的檔案加入您的開發專案中。 如果要使用Java建立客戶端應用程式,請包括必要的JAR檔案。 如果您使用web services,請確定您包含proxy檔案。

建立轉換PDF用戶端

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

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

參考PDF檔案以轉換為PostScript檔案

參考您要轉換為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 FormsAPI參考中的ToPSOptionsSpec類參考。

將PDF檔案轉換為PostScript檔案

在您建立服務用戶端並設定執行時期選項後,就可以叫用PostScript轉換作業。 此操作將需要有關要轉換的文檔的資訊,包括目標文檔的首選PostScript級別。

儲存PostScript檔案

將PDF檔案轉換為PostScript後,您可將輸出儲存為PostScript檔案。

另請參閱

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

使用web service API將PDF檔案轉換為PS

包含AEM FormsJava庫檔案

設定連接屬性

轉換PDF服務API快速入門

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

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

  1. 包含專案檔案。

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

  2. 建立轉換PDF用戶端。

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

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

    • 通過調用ToPSOptionsSpec對象的建構子建立對象。
    • 通過調用屬於ToPSOptionsSpec對象的相應方法來設定運行時選項。 例如,若要定義所建立的PostScript層級,請叫用ToPSOptionsSpec物件的setPsLevel方法,並傳遞指定PostScript層級的PSLevel列舉值。 有關可設定的所有運行時值的資訊,請參閱AEM FormsAPI參考中的ToPSOptionsSpec類參考。
  5. 將PDF檔案轉換為PostScript檔案。

    叫用ConvertPdfServiceClient物件的toPS2方法並傳遞下列值:

    • com.adobe.idp.Document物件,代表要轉換為PostScript檔案的PDF檔案。
    • ToPSOptionsSpec物件,指定PostScript執行時期選項。

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

  6. 儲存PostScript檔案。

    • 建立java.io.File物件,並確定副檔名為。ps。
    • 叫用Document物件的copyToFile方法,將Document物件的內容複製至檔案(請確定您使用toPS2方法傳回的Document物件)。

另請參閱

步驟摘要

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

包含AEM FormsJava庫檔案

設定連接屬性

使用web service API將PDF檔案轉換為PS

使用「轉換PDF服務API」(web service)將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. 參考PDF檔案以轉換為PostScript檔案。

    • 使用其建構子建立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層級,請為ToPSOptionsSpec物件的psLevel資料成員指派PSLevel列舉值。
  5. 將PDF檔案轉換為PostScript檔案。

    叫用GeneratePDFServiceService物件的toPS2方法並傳遞下列值:

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

    轉換完成後,請存取其BLOB物件的MTOM屬性,以擷取代表PostScript檔案的二進位資料。 這會傳回一個位元組陣列,您可將其寫出至PostScript檔案。

  6. 儲存PostScript檔案。

    • 通過調用System.IO.FileStream對象的建構子建立對象。 傳遞代表PS檔案檔案位置的字串值。
    • 建立一個位元組陣列,用於儲存encryptPDFUsingPassword方法返回的BLOB對象的資料內容。 取得BLOB物件的MTOM欄位值,以填入位元組陣列。
    • 調用System.IO.BinaryWriter對象的建構子並傳遞System.IO.FileStream對象,以建立對象。
    • 調用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 services,請確定您包含proxy檔案。

建立轉換PDF用戶端

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

擷取要轉換的PDF檔案

您必須擷取PDF檔案才能轉換為影像。 您無法將互動式PDF檔案轉換為影像。 如果您嘗試這麼做,則會擲回例外。 若要將互動式PDF檔案轉換為影像檔,您必須先平面化PDF檔案,才能進行轉換。 (請參閱平面化PDF檔案。)

設定執行時期選項

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

將PDF轉換為影像

建立服務用戶端並設定執行時期選項後,您就可以將PDF檔案轉換為影像。 會傳回包含影像的系列物件。

從系列擷取影像檔案

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

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

另請參閱

包含AEM FormsJava庫檔案

設定連接屬性

轉換PDF服務API快速入門

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

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

  1. 包含專案檔案。

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

  2. 建立轉換PDF用戶端。

    • 建立包含連接屬性的ServiceClientFactory對象。
    • 使用其建構子並傳遞ServiceClientFactory對象,建立ConvertPdfServiceClient對象。
  3. 擷取要轉換的PDF檔案。

    • 使用PDF檔案的建構函式並傳遞指定PDF檔案位置的字串值,建立代表要轉換之PDF檔案的java.io.FileInputStream物件。
    • 使用其建構子並傳遞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 service API將PDF檔案轉換為影像檔

使用「轉換PDF服務API」(web service),將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

本頁內容

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now