如何使用 GroupDocs.Parser InputStream 解析 PDF(Java)
在現代 Java 應用程式中,如何解析 PDF 高效是一個常見問題。無論您的 PDF 位於雲端儲存、透過 HTTP 請求傳入,或是即時產生,直接從 InputStream 讀取即可免除暫存檔案的需求,並加快處理流程。本教學將帶您完整走過 java pdf processing 工作流程,示範使用 GroupDocs.Parser 從串流載入 PDF 的優勢,並提供可立即採用的實務案例。
快速解答
- 什麼是「從 PDF 提取文字」的意思? 它指的是以程式方式讀取 PDF 檔案的文字內容,無需手動複製貼上。
- 我可以在沒有實體檔案的情況下讀取 PDF 嗎? 可以——使用
InputStream即可直接從記憶體或網路來源載入文件。 - 哪個函式庫支援 Java 中基於串流的 PDF 讀取? GroupDocs.Parser 提供乾淨的 API 來完成此目的。
- 我需要授權嗎? 免費試用授權可用於評估;正式上線則需購買授權。
- 需要哪個 Java 版本? JDK 8 或以上。
什麼是「如何解析 PDF」?
解析 PDF 意指以程式方式抽取其底層資料——文字、影像或中繼資料——以便進行索引、分析或轉換內容。在 Java 中,GroupDocs.Parser 的 java pdf text extraction 功能讓此工作變得簡單直觀。
為什麼要從串流載入 PDF 而不是檔案?
從 串流 (load pdf from stream) 載入 PDF 可省去寫入暫存檔的開銷,降低 I/O 延遲,並提升對敏感文件的安全性。它同時能無縫整合雲端儲存桶、電子郵件附件或任何位元組陣列來源,這對現代 java pdf processing 流程至關重要。
前置條件
- Java Development Kit (JDK) 8+
- IntelliJ IDEA、Eclipse 或 NetBeans 等 IDE
- 基本的 Java I/O 串流概念
必要函式庫、版本與相依性
您需要 GroupDocs.Parser 函式庫(版本 25.5)。可透過 Maven 加入或直接下載。
Maven:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/parser/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>25.5</version>
</dependency>
</dependencies>
直接下載:
亦可從 GroupDocs.Parser for Java releases 下載最新版本。
取得授權的步驟
從 GroupDocs 官方網站取得免費試用授權,或購買正式授權以供正式環境使用。
設定 GroupDocs.Parser(Java 版)
加入相依性後,匯入所需的類別:
import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.TextReader;
import java.io.FileInputStream;
import java.io.InputStream;
如何使用 GroupDocs.Parser 解析 PDF 並提取文字
以下提供逐步示範,從 InputStream 載入 PDF 並印出其文字內容。
步驟 1:定義 Input Stream
建立指向 PDF 檔案的 InputStream。將 YOUR_DOCUMENT_DIRECTORY 替換為實際的資料夾路徑。
String filePath = "YOUR_DOCUMENT_DIRECTORY" + "/SamplePdf.pdf";
try (InputStream stream = new FileInputStream(filePath)) {
步驟 2:以串流初始化 Parser
將 InputStream 傳入 Parser 建構子,讓 GroupDocs.Parser 直接處理記憶體中的資料。
try (Parser parser = new Parser(stream)) {
步驟 3:提取文字內容
呼叫 getText() 取得 TextReader。若格式不支援,會回傳 null,方便您做容錯處理。
try (TextReader reader = parser.getText()) {
String extractedText = reader == null ? "Text extraction isn't supported" : reader.readToEnd();
System.out.println(extractedText);
}
}
}
- 參數: 傳入
Parser的InputStream。 - 回傳值: 用於讀取文件文字的
TextReader。 - 目的:
getText()抽象化特定格式的解析,直接提供純文字。
常見陷阱與除錯
- 檔案路徑錯誤: 請確認路徑與檔名正確。
- 不支援的格式:
getText()會對僅含影像的 PDF 回傳null,請依範例處理此情況。 - 記憶體洩漏: 請務必使用 try‑with‑resources(如範例所示)即時關閉串流與 Parser 物件。
實務案例
- 發票處理: 從電子郵件收到的 PDF 中抽取每筆項目文字。
- 資料遷移: 直接串流 PDF 進入新資料庫,以取代舊系統的檔案搬移。
- 法律審查: 快速掃描合約關鍵條款,無需手動開啟檔案。
大型 PDF 的效能建議
- 將
FileInputStream包裹在BufferedInputStream中,以提升讀取速度。 - 抽取完畢後立即關閉所有資源,釋放記憶體。
- 定期更新 GroupDocs.Parser,享受效能優化與新功能。
如何在沒有檔案的情況下讀取 PDF(read pdf without file)— 替代做法
若 PDF 來源於 Web 服務,可將回應的位元組陣列包裝成 ByteArrayInputStream,再傳入相同的 Parser 建構子。程式碼保持不變,僅變更串流來源。
在 Java 中從 PDF 提取影像(extract images pdf java)
本教學雖以文字為主,但 GroupDocs.Parser 亦支援透過 parser.getImages() 抽取影像。只要將 getText() 區塊換成 getImages() 即可取得影像串流。
解析 PDF InputStream(parse pdf inputstream java)
上述模式——建立 InputStream、初始化 Parser、呼叫相應 API——涵蓋所有解析情境(文字、影像、元資料)。
相關資源
- 文件說明: GroupDocs Parser Documentation
- API 參考: API Reference
- 下載: Latest Releases
- GitHub: Source Code on GitHub
- 免費支援: Support Forum
- 臨時授權: Request a Temporary License
常見問答
Q1: 我可以使用 GroupDocs.Parser 從 Word 文件中提取文字嗎?
A1: 可以,GroupDocs.Parser 支援 DOCX、PPTX 等多種格式。完整支援清單請參閱 API Reference。
Q2: 若文件格式不受支援,我該如何處理?
A2: getText() 會回傳 null,您可以依此實作備援邏輯。
Q3: 是否能使用 GroupDocs.Parser 抽取影像?
A3: 可以,使用 getImages() 方法即可取得支援文件中的影像串流。
Q4: 文件載入時常見問題該如何排除?
A4: 請確認檔案路徑、使用正確的 JDK 版本,並確保 PDF 未被密碼保護。更多協助請前往 GroupDocs Support 論壇。
Q5: 使用 GroupDocs.Parser 時,記憶體管理的最佳實踐是什麼?
A5: 如範例所示,務必使用 try‑with‑resources 自動關閉串流與 Parser 實例,避免記憶體洩漏。
最後更新: 2026-02-24
測試環境: GroupDocs.Parser 25.5 (Java)
作者: GroupDocs