
شما ممکن است نیاز داشته باشید که به دنبال یک متن خاص از اسناد Word یا PDF باشید. به عنوان یک توسعهدهنده Java، میتوانید هر متنی را به صورت برنامهنویسی از اسناد PDF جستجو کنید. در این مقاله، شما یاد خواهید گرفت که چگونه یک کلمه را در اسناد PDF با استفاده از Java جستجو کنید.
موضوعات زیر در این مقاله مورد بحث قرار گرفتهاند:
Java API برای جستجوی متن
من از GroupDocs.Search for Java API برای جستجو در PDF استفاده خواهم کرد. این API به شما اجازه میدهد تا عملیات جستجوی متنی را در تمام قالبهای مستندات محبوب مانند PDF، Word، Excel، PowerPoint و بسیاری دیگر انجام دهید. شما میتوانید اطلاعات مورد نیاز خود را به سادگی از فایلها، مستندات، ایمیلها و آرشیوها با استفاده از این API استخراج کنید. همچنین این API به شما امکان میدهد تا چندین ایندکس را ایجاد و ادغام کنید. شما میتوانید از جستجوی ساده، بولی، عبارات منظم (Regex)، نقایص و سایر انواع کوئریها برای جستجوی سریع و هوشمندانه در میان ایندکسها استفاده کنید.
دانلود و پیکربندی
شما میتوانید download JAR API را دانلود کنید یا فقط پیکربندی pom.xml زیر را به برنامههای Java مبتنی بر Maven خود اضافه کنید تا مثالهای کد زیر را امتحان کنید.
<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>
متن را در PDF با استفاده از Java جستجو کنید
شما میتوانید به راحتی هر متنی یا یک کلمه خاص را در اسناد PDF خود با دنبال کردن مراحل ساده زیر جستجو کنید:
- Create an Index
- مسیر به پوشه شاخص را مشخص کنید
- بهindex events اشتراکگذاری کنید
- فایلها را به ایندکس اضافه کنید با فراخوانی add متد
- Perform a search using the search method
- از 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
// Create a new index or
// یک ایندکس موجود را باز کنید
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

در یک سند PDF با استفاده از Java به دنبال یک کلمه بگردید
شاخص و رویداد شاخص
کلاس Index اصلیترین کلاس برای ایندکسگذاری اسناد و جستجو در آنها است. یک ایندکس میتواند در حافظه یا بر روی دیسک با فراخوانی سازنده این کلاس ایجاد شود. من آن را بر روی دیسک ایجاد کردهام تا بتوان از آن دوباره استفاده کرد.
برای دریافت اطلاعات در مورد خطاهای ایندکس گذاری، به رویداد ErrorOccurred مشترک شدهام. این رویداد خطاها را در صورتی که در حین ایندکس کردن فایلها رخ دهد، نمایش خواهد داد.
فایلها را به نمایه اضافه کنید
متد add کلاس Index یک فایل یا تمام فایلهای موجود در یک پوشه یا زیرپوشهها را با یک مسیر مطلق یا نسبی اضافه میکند. تمام اسناد موجود در مسیر داده شده ایندکس خواهند شد.
عملیات جستجو را انجام دهید
کلاس Index روشهای مختلفی برای search فراهم میکند تا عملیات جستجو را انجام دهد. شما میتوانید با کلیدواژه ساده یا با تعریف یک SearchQuery جستجو کنید.
کلاس SearchResult جزئیات یک نتیجه جستجو را که با یک کوئری جستجو مطابقت دارد، فراهم میکند. برخی از متدها در اینجا توصیف شدهاند:
- متد getOccurrenceCount() تعداد کل ظاهرهای پیدا شده را برمیگرداند.
- متد getDocumentCount() تعداد اسنادی که در ایندکس پیدا شده است را فراهم میکند.
- متد getFoundDocument(int) یک FoundDocument برمیگرداند
- متد FoundDocument.getOccurrenceCount() تعداد وقوعات یافته در سند را بازمیگرداند.
نتایج جستجو را برجسته کنید
کلاس HtmlHighlighter به آسانی نتایج جستجو را در متن کل یک سند که به فرمت HTML است، هایلایت میکند.
روش highlight کلاس Index خروجی HTML را تولید میکند که وقوعهای اصطلاحات پیدا شده را هایلایت میکند. میتوانید جزئیات بیشتری در مورد `Highlighting Search Results” در مستندات پیدا کنید.
Get a Free License
شما میتوانید بدون محدودیتهای ارزیابی از API با درخواست a free temporary license استفاده کنید.
نتیجه گیری
در این مقاله، شما یاد گرفتهاید که چگونه یک کلمه را در یک سند PDF با استفاده از Java جستجو کنید. شما میتوانید اطلاعات بیشتری در مورد GroupDocs.Search برای API Java با استفاده از documentation یاد بگیرید. در صورت هر گونه ابهام، لطفاً بدون تردید با ما در forum تماس بگیرید.