從 Java 串流將 DOCX 轉換為 PDF(使用 GroupDocs)

您是否希望在 Java 應用程式中直接從串流 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

介紹

從串流將 DOCX 轉換為 PDF 在 Web 應用程式中特別有用,因為可避免暫存檔、減少 I/O 開銷,並保持記憶體使用效率。以下將逐步說明完整設定,從 Maven 配置到可執行的 Java 方法,完成轉換。

前置條件

  • 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。若要於正式環境部署,需購買授權或申請臨時授權以進行更長時間的測試。

實作指南

以下為逐步說明,展示 如何從串流將 DOCX 檔案轉換為 PDF

從串流載入文件

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

步驟 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 InitializationConverter 類別以回傳 FileInputStream 的 lambda 方式實例化。此模式可讓您將任意 InputStream(例如來自 HTTP 請求)傳入轉換引擎。
  • Handling FileNotFoundException – 該 lambda 捕獲 FileNotFoundException,並以清晰訊息重新拋出 RuntimeException,符合次要關鍵字 handle file notfound exception
  • PDF Conversion OptionsPdfConvertOptions 讓您微調輸出 PDF(如頁面尺寸、壓縮)。預設設定適用於大多數情況。

疑難排解技巧

  • 請確認 source DOCX pathoutput directory 正確;拼寫錯誤會導致 FileNotFoundException
  • 若收到 GroupDocsConversionException,請檢查內部例外訊息以取得線索(例如不支援的檔案格式)。
  • 對於大型文件,建議將 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;此類別非執行緒安全。

結論

在本教學中,您已學會如何使用 GroupDocs.Conversion for Java 從串流將 DOCX 轉換為 PDF。透過直接從 InputStream 載入文件、處理可能的 FileNotFoundException,以及運用簡易的 Converter API,您可以為現代 Java 應用程式構建高效、無磁碟需求的轉換管線。

常見問答

Q: How do I convert a DOCX file that is stored in a database BLOB?
A: 將 BLOB 以 InputStream 方式取出,並依範例將其傳入 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 提供事件回呼,您可掛接以取得進度更新。

資源


最後更新: 2025-12-21
測試版本: GroupDocs.Conversion 25.2
作者: GroupDocs