Java Stream 轉換 – DOCX 轉 PDF 與 GroupDocs

您是否希望在 Java 應用程式中直接使用 java stream conversion 從串流 convert DOCX to PDF?此常見需求出現在處理未直接存在於磁碟上的檔案時——例如來自網頁表單的上傳或透過網路連線接收的資料。在本教學中,您將學習如何從串流載入文件、處理可能的 FileNotFoundException,以及使用 GroupDocs.Conversion for Java 產生 PDF。

快速解答

  • What does “convert DOCX to PDF from streams” mean? 這表示從 InputStream 讀取 DOCX 檔案,並將轉換後的 PDF 直接寫入檔案或其他串流,而不會先將原始 DOCX 儲存到磁碟上。
  • Which library handles the conversion? GroupDocs.Conversion for Java 提供簡易的 API 以進行基於串流的轉換。
  • Do I need a license for production? 是的,正式環境需要商業授權;亦提供免費試用供評估使用。
  • How do I handle a missing source file?FileInputStream 的建立包在 try‑catch 區塊中,並妥善處理 FileNotFoundException

什麼是 java stream conversion?

Java stream conversion 是指從 InputStream(或 OutputStream)取得資料,並將其轉換為其他格式,而不在磁碟上保存中間檔案的過程。在文件處理的情境下,它讓您 how to convert docx 檔案為 PDF、影像或其他格式,同時保持低記憶體使用量並避免產生暫存檔。

為什麼使用 java stream conversion?

  • Performance: 消除先將來源 DOCX 寫入磁碟所產生的額外 I/O 操作。
  • Security: 減少敏感文件的暴露面,因為文件從未寫入檔案系統。
  • Scalability: 非常適合雲原生或微服務架構,因為此類環境偏好無狀態處理。

前置條件

  • Java Development Kit (JDK) 8 或更高版本
  • Maven 用於相依管理
  • 基本了解 Java streams(例如 InputStreamFileInputStream

環境設定

要在 Java 中使用 GroupDocs.Conversion,首先需將該函式庫加入您的 Maven 專案。

設定 GroupDocs.Conversion for Java

將 GroupDocs 倉庫與轉換相依加入您的 pom.xml

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/conversion/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-conversion</artifactId>
      <version>25.2</version>
   </dependency>
</dependencies>

取得授權

您可以先使用免費試用版來體驗 GroupDocs.Conversion for Java。正式部署時,需購買授權或申請臨時授權以進行更長時間的測試。

實作指南

以下是一個逐步說明,展示 how to convert a DOCX file to PDF from a stream

從串流載入文件

此功能允許您直接從輸入串流轉換文件,無需先將其存放於磁碟。

步驟 1:匯入必要的套件

import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.exceptions.GroupDocsConversionException;
import com.groupdocs.conversion.options.convert.PdfConvertOptions;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

步驟 2:定義轉換方法

public class LoadDocumentFromStream {
    public static void run() {
        // Specify the output path for the converted PDF
        String convertedFile = "YOUR_OUTPUT_DIRECTORY/LoadDocumentFromStream.pdf";
        
        try {
            // Initialize a Converter instance with a lambda that supplies the input stream
            Converter converter = new Converter(() -> {
                try {
                    return new FileInputStream("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX");
                } catch (FileNotFoundException e) {
                    // Handle file notfound exception gracefully
                    throw new RuntimeException("Source DOCX file not found.", e);
                }
            });
            
            // Set up PDF conversion options (default settings)
            PdfConvertOptions options = new PdfConvertOptions();
            
            // Perform the conversion and save the PDF
            converter.convert(convertedFile, options);
        } catch (Exception e) {
            // Wrap any conversion errors in a GroupDocsConversionException
            throw new GroupDocsConversionException(e.getMessage());
        }
    }
}

說明

  • Converter Initialization – 透過 lambda 回傳 FileInputStream 來實例化 Converter 類別。此模式允許您將任何 InputStream(例如來自 HTTP 請求)輸入至轉換引擎。
  • Handling FileNotFoundException – lambda 捕捉 FileNotFoundException,並以清晰訊息重新拋出為 RuntimeException,符合次要關鍵字 handle file notfound exception
  • PDF Conversion OptionsPdfConvertOptions 讓您微調輸出 PDF(例如頁面大小、壓縮)。預設設定適用於大多數情況。

常見問題與解決方案

  • Incorrect file paths – 請再次確認來源 DOCX 路徑與輸出目錄;拼寫錯誤會導致 FileNotFoundException
  • Conversion failures – 若出現 GroupDocsConversionException,請檢查內部例外以取得如不支援格式等細節。
  • Large documents – 將 FileInputStream 包裝於 BufferedInputStream 以提升 I/O 效能。

實務應用

使用 GroupDocs.Conversion 透過串流將 DOCX 轉為 PDF 在多種實務情境中相當有價值:

  1. Web Application File Handling – 即時將使用者上傳的 DOCX 轉為 PDF,且不需保存原始檔案。
  2. Network Data Processing – 直接從 socket 或 REST API 接收的串流中轉換文件。
  3. Batch Processing Systems – 將一系列輸入串流送入轉換工作者,以批次產生 PDF。

效能考量

  • Buffered I/O – 對大型檔案使用 BufferedInputStream 包裝串流,以減少讀取開銷。
  • Memory Management – 轉換完成後立即釋放 Converter 實例,以釋放原生資源。
  • Thread Safety – 為每個執行緒建立獨立的 Converter;此類別非執行緒安全。

常見問答

Q: How do I convert a DOCX file that is stored in a database BLOB?
A: 以 InputStream 取得 BLOB,並依範例將其傳入 Converter lambda。

Q: What if the source stream is large (hundreds of MB)?
A: 使用 BufferedInputStream,並考慮在背景執行緒中處理轉換,以免阻塞主應用流程。

Q: Does GroupDocs.Conversion support password‑protected documents?
A: 是的。建立 Converter 時可透過 LoadOptions 提供密碼。

Q: Can I convert directly to an OutputStream instead of a file path?
A: 目前 API 主要寫入檔案路徑,但您可以寫入暫存檔再回傳串流,或使用接受 ByteArrayOutputStreamconvert 重載。

Q: Is there a way to monitor conversion progress?
A: GroupDocs.Conversion 提供事件回呼,您可掛接以取得進度更新。

資源


最後更新: 2026-03-24
測試版本: GroupDocs.Conversion 25.2
作者: GroupDocs