使用 Java 在 PDF 中搜索单词

您可能需要从 Word 或 PDF 文档中搜索特定文本。作为 Java 开发人员,您可以通过编程方式搜索 PDF 文档中的任何文本。在本文中,您将学习如何使用 Java 搜索 PDF 文档中的单词

本文讨论/涵盖了以下主题:

用于搜索文本的 Java API

我将使用 GroupDocs.Search for Java API 来搜索 PDF 文档。它允许您以所有流行的文档格式执行文本搜索操作,例如 PDF、Word、Excel、PowerPoint 等。您可以使用此 API 从文件、文档、电子邮件和档案中轻松获取所需信息。它还使您能够创建和合并多个索引。您可以使用简单、布尔、正则表达式 (Regex)、模糊和其他类型的查询来快速、智能地搜索索引。

下载并配置

您可以 下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置,以尝试以下代码示例。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>20.11</version> 
</dependency>

使用 Java 在 PDF 中搜索文本

您可以按照以下提到的简单步骤轻松搜索 PDF 文档中的任何文本或特定单词:

  • 创建一个 索引
  • 指定索引文件夹的路径
  • 订阅 索引事件
  • 通过调用 add 方法将文件添加到索引
  • 使用 search 方法执行搜索
  • 使用 SearchResult 并打印摘要
  • 使用 highlight 方法在输出中突出显示搜索结果

以下代码示例展示了如何使用 Java 从 PDF 文档中搜索单词。

String indexFolder = "C:\\Index\\"; // Specify the path to the index folder
String documentsFolder = "C:\\Files\\"; // Specify the path to a folder containing documents to search

// 创建新索引或
// 打开现有索引
Index index = new Index(indexFolder);

// 订阅索引事件
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
    public void invoke(Object sender, IndexErrorEventArgs args) {
        System.out.println(args.getMessage()); // Writing error messages to the console
    }
});

// 同步添加文件
index.add(documentsFolder); // Synchronous indexing documents from the specified folder

// 执行搜索
String query = "elementum"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

// 使用搜索结果
// 打印结果
System.out.println("Documents found: " + result.getDocumentCount());
System.out.println("Total occurrences found: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
}

// 突出显示文本中的出现
if (result.getDocumentCount() > 0) {
    FoundDocument document = result.getFoundDocument(0); // Getting the first found document
    String path = "C:\\Output\\Highlighted.html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); // Creating the output adapter to a file
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the HtmlHighlighter object
    index.highlight(document, highlighter); // Generating output HTML formatted document with highlighted search results

    System.out.println();
    System.out.println("Generated HTML file can be opened with Internet browser.");
    System.out.println("The file can be found by the following path:");
    System.out.println(Paths.get(path).toAbsolutePath().toString());
}

上述代码示例应生成以下输出:

Documents found: 1
Total occurrences found: 6
	Document: C:\Files\Lorem ipsum.pdf
	Occurrences: 6

Generated HTML file can be opened with Internet browser.
The file can be found by the following path:
C:\Output\Highlighted.html
使用 Java 在 PDF 文档中搜索单词

使用 Java 在 PDF 文档中搜索单词

索引和索引事件

Index 类是索引文档和搜索文档的主要类。通过调用此类的构造函数,可以在内存或磁盘上创建索引。我已经在磁盘上创建了它,以便可以重复使用。

为了接收有关索引错误的信息,我订阅了 ErrorOccurred 事件。如果在索引文件期间发生任何错误,它将显示错误。

将文件添加到索引

Index 类的 add 方法通过绝对或相对路径添加一个文件或文件夹或子文件夹中的所有文件。给定路径上的所有文档都将被索引。

执行搜索操作

Index 类提供各种 search 方法来执行搜索操作。您可以通过简单的关键字或通过定义 SearchQuery 进行搜索。

SearchResult 类提供与搜索查询匹配的搜索结果的详细信息。这里描述了一些方法:

突出显示搜索结果

HtmlHighlighter 类有助于在 HTML 格式的整个文档文本中突出显示搜索结果。

Index 类的 highlight 方法生成 HTML 输出,突出显示找到的术语的出现。您可以在文档中找到有关“突出显示搜索结果”的更多详细信息。

获得免费许可证

您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,您学习了如何使用 Java 搜索 PDF 文档中的单词。您可以使用 文档 了解有关 GroupDocs.Search for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看