如何使用 GroupDocs.Parser InputStream 解析 PDF(Java)

在现代 Java 应用程序中,如何解析 PDF 是一个常见问题。无论您的 PDF 位于云存储、通过 HTTP 请求到达,还是即时生成,直接从 InputStream 读取它们可以消除临时文件的需求并加快处理流水线。本教程将带您完整了解使用 GroupDocs.Parserjava pdf processing 工作流,展示从流加载 PDF 的优势,并突出您今天即可采用的实际用例。

快速答案

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

什么是“如何解析 PDF”?

解析 PDF 指的是以编程方式提取其底层数据——文本、图像或元数据——以便您可以对内容进行索引、分析或转换。在 Java 中,GroupDocs.Parser 的 java pdf text extraction 功能使此任务变得简单。

为什么从流加载 PDF 而不是从文件?

加载 PDF(load pdf from stream)消除了写入临时文件的开销,降低了 I/O 延迟,并提升了敏感文档的安全性。它还能够与云存储、电子邮件附件或任何字节数组来源无缝集成,这对于现代 java pdf processing 流水线至关重要。

前置条件

  • Java Development Kit (JDK) 8+
  • IDE,例如 IntelliJ IDEA、Eclipse 或 NetBeans
  • 对 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 网站获取免费试用许可证,或购买正式许可证用于生产。

为 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 并打印其文本内容。

步骤 1:定义输入流

创建指向 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);
        }
    }
}
  • 参数: 提供给 ParserInputStream
  • 返回值: 用于读取文档文本的 TextReader
  • 目的: getText() 抽象出特定格式的解析,返回纯文本。

常见陷阱与故障排除

  • 文件路径错误: 请检查路径和文件名。
  • 不支持的格式: 对于仅包含图像的 PDF,getText() 返回 null;请按示例处理此情况。
  • 内存泄漏: 始终使用 try‑with‑resources(如示例所示)及时关闭流和 parser 对象。

实际用例

  1. 发票处理: 从通过电子邮件接收的 PDF 中提取行项目文本。
  2. 数据迁移: 通过流式传输 PDF 直接将内容迁移到新数据库中。
  3. 法律审查: 快速扫描合同关键条款,无需手动打开文件。

大型 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 实例,防止内存泄漏。


最后更新: 2026-02-24
测试环境: GroupDocs.Parser 25.5 (Java)
作者: GroupDocs