Bạn có thể cần tìm kiếm một văn bản cụ thể từ tài liệu Word hoặc PDF. Là nhà phát triển Java, bạn có thể tìm kiếm bất kỳ văn bản nào từ tài liệu PDF theo chương trình. Trong bài viết này, bạn sẽ tìm hiểu cách tìm kiếm một từ trong tài liệu PDF bằng Java.
Các chủ đề sau được thảo luận/đề cập trong bài viết này:
API Java để tìm kiếm văn bản
Tôi sẽ sử dụng API GroupDocs.Search for Java để tìm kiếm trong tài liệu PDF. Nó cho phép bạn thực hiện các thao tác tìm kiếm văn bản ở tất cả các định dạng tài liệu phổ biến như PDF, Word, Excel, PowerPoint, v.v. Bạn có thể dễ dàng tìm nạp thông tin cần thiết của mình từ các tệp, tài liệu, email và kho lưu trữ bằng API này. Nó cũng cho phép bạn tạo và hợp nhất nhiều chỉ mục. Bạn có thể sử dụng các truy vấn đơn giản, Boolean, Biểu thức chính quy (Regex), Fuzzy và các loại truy vấn khác để tìm kiếm nhanh chóng và thông minh thông qua các chỉ mục.
Tải xuống và cấu hình
Bạn có thể tải xuống JAR của API hoặc chỉ cần thêm cấu hình pom.xml sau vào các ứng dụng Java dựa trên Maven của bạn để thử các ví dụ mã được đề cập bên dưới.
<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>
Tìm kiếm văn bản trong PDF bằng Java
Bạn có thể dễ dàng tìm kiếm bất kỳ văn bản hoặc một từ cụ thể nào trong tài liệu PDF của mình bằng cách thực hiện theo các bước đơn giản được đề cập bên dưới:
- Tạo một Chỉ mục
- Chỉ định đường dẫn đến thư mục chỉ mục
- Đăng ký sự kiện chỉ mục
- Thêm tệp vào Chỉ mục bằng cách gọi phương thức add
- Thực hiện tìm kiếm bằng phương pháp tìm kiếm
- Sử dụng SearchResult và in tóm tắt
- Đánh dấu kết quả tìm kiếm ở đầu ra bằng phương pháp highlight
Mẫu mã sau đây cho biết cách tìm kiếm một từ trong tài liệu PDF bằng Java.
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
// Tạo một chỉ mục mới hoặc
// Mở một chỉ mục hiện có
Index index = new Index(indexFolder);
// Đăng ký các sự kiện chỉ mục
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
}
});
// Thêm tập tin đồng bộ
index.add(documentsFolder); // Synchronous indexing documents from the specified folder
// Thực hiện tìm kiếm
String query = "elementum"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index
// Sử dụng kết quả tìm kiếm
// In kết quả
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());
}
// Đánh dấu các lần xuất hiện trong văn bản
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());
}
Mẫu mã trên sẽ tạo ra kết quả đầu ra sau:
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
Chỉ mục và sự kiện chỉ mục
Lớp Index là lớp chính để lập chỉ mục tài liệu và tìm kiếm thông qua chúng. Một chỉ mục có thể được tạo trong bộ nhớ hoặc trên đĩa bằng cách gọi hàm tạo của lớp này. Tôi đã tạo nó trên đĩa để có thể sử dụng lại.
Để nhận thông tin về lỗi lập chỉ mục, tôi đã đăng ký sự kiện ErrorOccurred. Nó sẽ hiển thị các lỗi nếu có xảy ra trong quá trình lập chỉ mục các tệp.
Thêm tệp vào chỉ mục
Phương thức add của lớp Index thêm một tệp hoặc tất cả các tệp trong một thư mục hoặc các thư mục con theo đường dẫn tuyệt đối hoặc tương đối. Tất cả các tài liệu trên đường dẫn nhất định sẽ được lập chỉ mục.
Thực hiện thao tác tìm kiếm
Lớp Index cung cấp các phương thức tìm kiếm khác nhau để thực hiện thao tác tìm kiếm. Bạn có thể tìm kiếm theo từ khóa đơn giản hoặc bằng cách xác định SearchQuery.
Lớp SearchResult cung cấp chi tiết về kết quả tìm kiếm phù hợp với truy vấn tìm kiếm. Một số phương pháp được mô tả ở đây:
- Phương thức getOccurrenceCount() trả về tổng số lần xuất hiện được tìm thấy
- Phương thức getDocumentCount() cung cấp số lượng tài liệu được tìm thấy trong Index
- Phương thức getFoundDocument(int) trả về FoundDocument
- Phương thức FoundDocument.getOccurrenceCount() trả về số lần xuất hiện được tìm thấy trong tài liệu
Đánh dấu kết quả tìm kiếm
Lớp HtmlHighlighter tạo điều kiện làm nổi bật kết quả tìm kiếm trong toàn bộ văn bản tài liệu được định dạng bằng HTML.
Phương thức highlight của lớp Index tạo ra các lần xuất hiện đánh dấu đầu ra HTML của các thuật ngữ được tìm thấy. Bạn có thể tìm thêm thông tin chi tiết về “Đánh dấu kết quả tìm kiếm" trong tài liệu.
Nhận giấy phép miễn phí
Bạn có thể dùng thử API mà không bị giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.
Phần kết luận
Trong bài viết này, bạn đã học cách tìm kiếm một từ trong tài liệu PDF bằng Java. Bạn có thể tìm hiểu thêm về GroupDocs.Tìm kiếm API Java bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.