使用 GroupDocs.Parser InputStream (Java) 从 PDF 中提取文本

在现代 Java 应用程序中,直接从 InputStream提取 PDF 文本 文件可以显著简化文档流程——尤其是当文件存储在云存储桶、通过 HTTP 接收或在内存中处理而无需触及文件系统时。本指南将准确展示如何使用 GroupDocs.Parser 从流中读取 PDF,说明此方法的优势,并帮助避免常见陷阱。

快速回答

  • “extract text from PDF” 是什么意思? 它指的是以编程方式读取 PDF 文件的文本内容,而无需手动复制粘贴。
  • 我可以在没有实体文件的情况下读取 PDF 吗? 可以——通过使用 InputStream,您可以直接从内存或网络来源加载文档。
  • 哪个库支持基于流的 PDF 读取(Java)? GroupDocs.Parser 提供了简洁的 API 来实现此目的。
  • 我需要许可证吗? 免费试用许可证可用于评估;生产环境需要付费许可证。
  • 需要哪个 Java 版本? JDK 8 或更高。

什么是 “extract text from PDF”?

提取 PDF 文本是指以编程方式获取文档中嵌入的可读字符。这对于索引、搜索、数据挖掘或将内容输入下游业务逻辑至关重要。

为什么要从流而不是文件读取 PDF?

(read pdf from stream) 读取 PDF 可消除临时文件的需求,降低 I/O 开销,并在处理敏感文档时提升安全性。它还支持处理位于云存储、电子邮件附件或即时生成的 PDF。

前置条件

  • 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>

Direct Download:
或者,从 GroupDocs.Parser for Java releases 下载最新版本。

获取许可证的步骤

从 GroupDocs 网站获取免费试用许可证,或购买正式许可证用于生产环境。

为 Java 设置 GroupDocs.Parser

添加依赖后,导入所需的类:

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.TextReader;
import java.io.FileInputStream;
import java.io.InputStream;

使用 GroupDocs.Parser 提取 PDF 文本的方式

下面是一步步的演示,加载来自 InputStream 的 PDF 并打印其文本内容。

Step 1: Define the Input Stream

创建指向 PDF 文件的 InputStream。将 YOUR_DOCUMENT_DIRECTORY 替换为实际文件夹路径。

String filePath = "YOUR_DOCUMENT_DIRECTORY" + "/SamplePdf.pdf";
try (InputStream stream = new FileInputStream(filePath)) {

Step 2: Initialize the Parser with the Stream

InputStream 传递给 Parser 构造函数。这样 GroupDocs.Parser 可以直接使用内存中的数据。

    try (Parser parser = new Parser(stream)) {

Step 3: Extract Text Content

调用 getText() 获取 TextReader。如果格式不受支持,将返回 null,以便优雅地处理。

        try (TextReader reader = parser.getText()) {
            String extractedText = reader == null ? "Text extraction isn't supported" : reader.readToEnd();
            System.out.println(extractedText);
        }
    }
}
  • Parameters: 提供给 ParserInputStream
  • Return Values: 用于读取文档文本的 TextReader
  • Purpose: getText() 抽象了特定格式的解析,返回纯文本。

常见陷阱与故障排除

  • Incorrect file path: 验证路径和文件名。
  • Unsupported format: 对仅包含图像的 PDF,getText() 会返回 null;请按示例处理该情况。
  • Memory leaks: 始终使用 try‑with‑resources(如示例所示)及时关闭流和 parser 对象。

实际使用案例

  1. Invoice Processing: 从通过电子邮件接收的 PDF 中提取行项目文本。
  2. Data Migration: 通过流式传输 PDF 直接迁移内容到新数据库,以取代旧系统。
  3. Legal Review: 快速扫描合同关键条款,无需手动打开文件。

大型 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 Java(parse pdf inputstream java)

上述模式——创建 InputStream、初始化 Parser、调用所需 API——覆盖了所有解析场景(文本、图像、元数据)。

资源

常见问题

Q1: 我可以使用 GroupDocs.Parser 从 Word 文档中提取文本吗?
A1: 可以,GroupDocs.Parser 支持 DOCX、PPTX 等多种格式。完整列表请参阅 API Reference

Q2: 如何处理 GroupDocs.Parser 不支持的文档格式?
A2: 当不支持提取时,getText() 方法会返回 null,您可以据此实现回退逻辑。

Q3: 是否可以使用 GroupDocs.Parser 提取图像?
A3: 可以,使用 getImages() 方法即可获取支持文档中的图像流。

Q4: 如何排查文档加载的常见问题?
A4: 验证文件路径、确保使用正确的 JDK 版本,并确认 PDF 未受密码保护。更多帮助请访问 GroupDocs Support 论坛。

Q5: 使用 GroupDocs.Parser 时管理内存的最佳实践是什么?
A5: 始终采用 try‑with‑resources(如示例所示)自动关闭流和 parser 实例,防止内存泄漏。


Last Updated: 2025-12-24
Tested With: GroupDocs.Parser 25.5 (Java)
Author: GroupDocs