
Wyszukiwanie konkretnego tekstu w PDF dokumentach jest powszechnym zadaniem w systemach zarządzania dokumentami, narzędziach przeglądu prawnego, procesorach faktur i innych aplikacjach dla przedsiębiorstw. Niezależnie od tego, czy próbujesz znaleźć słowo kluczowe, wyodrębnić określone wartości, czy zredagować wrażliwe informacje, automatyzacja wyszukiwania w PDF może zaoszczędzić dużo czasu i wysiłku.
W tym wpisie na blogu nauczysz się, jak programowo wyszukiwać tekst w plikach PDF za pomocą C#. Przeprowadzimy cię krok po kroku przez najważniejsze funkcje z praktycznymi przykładami kodu C#.
Artykuł ten obejmuje następujące tematy:
- C# Biblioteka do wyszukiwania w dokumentach PDF
- Szukaj tekstu w PDF za pomocą C#
- Wyszukiwanie bez uwzględniania wielkości liter i całych słów w PDF
- Wyszukiwanie z użyciem wyrażeń regularnych w PDF
- Wyszukaj i wyodrębnij tekst z szczegółami pozycji
- Podświetlanie lub zastępowanie znalezionego tekstu
- Szukaj na wszystkich stronach lub na określonych stronach
- Szukaj i zamazuj wrażliwe informacje
- Darmowe zasoby
C# Biblioteka do Wyszukiwania w Dokumentach PDF
Aspose.PDF for .NET upraszcza proces wyszukiwania tekstu w plikach PDF przy użyciu C#. Umożliwia znajdowanie dokładnych słów, dopasowywanie wzorców za pomocą wyrażeń regularnych, a nawet podświetlanie lub zastępowanie dopasowanego tekstu - wszystko to za pomocą zaledwie kilku linii kodu. Ta potężna biblioteka zapewnia solidne funkcje do manipulacji dokumentami PDF. Umożliwia deweloperom łatwe wdrażanie funkcji wyszukiwania. Dzięki Aspose.PDF możesz szybko znaleźć słowa w pliku PDF, co czyni go nieocenionym narzędziem dla programistów oprogramowania.
Zanim przystąpisz do wyszukiwania tekstu w PDF, musisz skonfigurować swoje środowisko deweloperskie. Wykonaj te kroki, aby rozpocząć pracę z Aspose.PDF for .NET:
1. Zainstaluj Aspose.PDF for .NET.
Pobierz to z releases lub zainstaluj za pośrednictwem NuGet.Otwórz swój projekt .NET w Visual Studio i uruchom następujące polecenie w konsoli Menedżera pakietów NuGet:
PM> Install-Package Aspose.PDF
To polecenie dodaje bibliotekę Aspose.PDF do twojego projektu, abyś mógł uzyskać dostęp do jej potężnych funkcji przetwarzania PDF.
2. Importuj wymagane przestrzenie nazw
Na początku swojego pliku C#, dodaj te dyrektywy using:
using Aspose.Pdf;
using Aspose.Pdf.Text;
Teraz jesteś gotowy, aby rozpocząć przeszukiwanie tekstu w plikach PDF za pomocą API Aspose.PDF.
Wyszukiwanie tekstu w pliku PDF za pomocą C#
Z Aspose.PDF for .NET możesz łatwo wyszukiwać konkretne słowa lub frazy w pliku PDF, lokalizować wszystkie ich wystąpienia i podejmować działania, takie jak ich podświetlanie lub wyodrębnianie ich szczegółów.
Wykonaj te kroki, aby przeprowadzić podstawowe wyszukiwanie tekstu:
- Załaduj docelowy plik PDF za pomocą klasy Document.
- Utwórz TextFragmentAbsorber, aby zdefiniować słowo kluczowe do wyszukiwania.
- Uruchom pochłaniacz na wszystkich stronach za pomocą metody Accept().
- Retrieve all matching text fragments.
- Drukuj liczbę znalezionych meczów.
- Przechodź przez każdą pasującą pozycję i wyświetlaj jej numer strony.
Następny przykład kodu implementuje te kroki.
// Załaduj plik PDF
Document pdfDocument = new Document("sample.pdf");
// Stwórz absorber tekstu z wyszukiwanym słowem kluczowym.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");
// Zastosuj absorber do wszystkich stron
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Get the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Drukuj, ile razy znaleziono słowo kluczowe
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Przejdź przez każdą znalezioną tekst i wydrukuj ją
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Output Example
Found 3 instance(s) of the keyword.
Text: invoice | Page: 1
Text: invoice | Page: 2
Text: invoice | Page: 3
Ten przykład demonstruje prostą wyszukiwarkę słów kluczowych, która działa na wszystkich stronach w pliku PDF. Zobaczysz dopasowany tekst wraz z numerem strony.
Zrozumienie kluczowych klas używanych w wyszukiwarce PDF
Aby lepiej zrozumieć, co dzieje się w kodzie, oto szybki przegląd kluczowych klas i metod zaangażowanych:
Dokument
: Reprezentuje cały plik PDF. Zapewnia dostęp do stron, treści i struktury.TextFragmentAbsorber
: Znajduje wszystkie wystąpienia danego ciągu lub wzoru w pliku PDF. Możesz także włączyć funkcje, takie jak wyszukiwanie bez względu na wielkość liter lub oparte na wyrażeniach regularnych.Accept()
: Zastosowuje absorber do każdej strony. Przeszukuje dokument i zbiera pasujące fragmenty.TextFragments
: Zbiór wszystkich dopasowanych fragmentów tekstowych zwróconych przez absorbera.TextFragment
: Każde indywidualne dopasowanie z detalami takimi jak treść, położenie i numer strony.
Wyszukiwanie bez rozróżniania wielkości liter i pełnych słów przy użyciu C#
Kiedy wyszukujesz treści PDF, musisz kontrolować, jak system znajduje dopasowania, aby zapewnić dokładne wyniki. Czasami chcesz zignorować wielkość liter (“Invoice” vs. “invoice”), lub chcesz dopasować tylko pełne słowa — a nie częściowe dopasowania w innych słowach.
Aspose.PDF for .NET daje Ci narzędzia do zrobienia obu.
Wyszukiwanie niezależne od wielkości liter
Domyślnie, wyszukiwania są wrażliwe na wielkość liter. Aby zignorować wielkość liter, użyj TextSearchOptions
z włączoną opcją IgnoreCase
:
// Załaduj plik PDF
Document pdfDocument = new Document("sample.pdf");
// Stwórz pochłaniacz tekstu z wyrażeniem regularnym, które nie jest wrażliwe na wielkość liter
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");
// Ustaw opcje wyszukiwania tekstu, aby umożliwić użycie wyrażeń regularnych.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Zastosuj absorber do wszystkich stron
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Pobierz pasujące fragmenty tekstu.
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Wyświetl liczbę znalezionych meczów
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Przejdź przez pętlę i wyświetl każdy znaleziony fragment tekstu.
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
To znajdzie zarówno "Fakturę", "fakturę", "FAKTURĘ", jak i inne warianty.
Dopasuj tylko całe słowa
Możesz również zapobiegać częściowym dopasowaniom. Na przykład, wyszukiwanie car
nie powinno pasować do care
ani scar
.
// Załaduj plik PDF
Document pdfDocument = new Document("sample.pdf");
// Utwórz pochłaniacz tekstu z wyrażeniem regularnym do dopasowywania całych słów.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");
// Ustaw opcje wyszukiwania tekstu, aby włączyć użycie wyrażeń regularnych
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Zastosuj absorber do wszystkich stron
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Retrieve the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Pętla przez i wyświetlenie każdego znalezionego fragmentu tekstu
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
To zapewnia, że tylko samodzielne przypadki słowa `samochód” są dopasowane.
Wyszukiwanie z wyrażeniami regularnymi w PDF
W niektórych przypadkach musisz znaleźć więcej niż jedno konkretne słowo—chcesz dopasować wzorce takie jak daty, adresy e-mail lub numery referencyjne. Właśnie tutaj przychodzą w grę wyrażenia regularne (regex).
Aspose.PDF for .NET umożliwia korzystanie z wyrażeń regularnych do zaawansowanego wyszukiwania tekstu w dowolnej części dokumentu PDF.
Przykład: Znajdź wszystkie daty w pliku PDF
Powiedzmy, że chcesz znaleźć wszystkie daty w formacie dd/mm/yyyy
:
// Załaduj PDF i wyszukaj tekst
Document pdfDocument = new Document("sample.pdf");
// Włącz regex w opcjach wyszukiwania
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
IsRegularExpressionUsed = true
};
// Stwórz absorber z wzorem daty
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);
// Zastosuj absorber na stronach
pdfDocument.Pages.Accept(absorber);
// Pętla i wydrukuj znalezione wzory
foreach (TextFragment fragment in absorber.TextFragments)
{
Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}
Inne przydatne wzory:
- Emails:
\b[A-Za-z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
- Phone Numbers:
\d{3}[-.\s]??\d{3}[-.\s]??\d{4}
- Numery faktur:
INV-\d+
Regex rozszerza twoje możliwości wyszukiwania daleko poza statyczny tekst, pomagając w wydobywaniu danych strukturalnych z niestrukturalnych dokumentów.
Wyszukaj i wyodrębnij tekst z szczegółami pozycji
Czasami znalezienie tekstu to nie wszystko—możesz potrzebować wiedzieć, gdzie dokładnie się pojawia w pliku PDF. Aspose.PDF pozwala na wyodrębnienie numeru strony, współrzędnych i szczegółów formatowania każdego dopasowania.
Ta funkcja jest szczególnie przydatna do budowania indeksów, tagowania dokumentów lub tworzenia klikalnych linków.
Przykład: Uzyskaj pozycję każdego dopasowania
// Załaduj PDF i przeszukaj tekst
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
// Get matched fragments
TextFragmentCollection fragments = absorber.TextFragments;
// Drukuj pozycję i tekst dla każdego dopasowania
foreach (TextFragment fragment in fragments)
{
Console.WriteLine($"Text: {fragment.Text}");
Console.WriteLine($"Page: {fragment.Page.Number}");
Console.WriteLine($"Position - X: {fragment.Position.XIndent}, Y: {fragment.Position.YIndent}");
Console.WriteLine($"Font: {fragment.TextState.Font.FontName}, Size: {fragment.TextState.FontSize}");
Console.WriteLine("------------");
}
Sample Output
Text: invoice
Page: 1
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 2
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 3
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Teraz dokładnie wiesz, gdzie pojawia się słowo `faktura”, a także jak jest stylizowane. Taki poziom szczegółowości otwiera drzwi do zaawansowanego przetwarzania, takiego jak adnotacje, podpowiedzi lub dynamiczne podświetlenia.
Wyróżnianie lub zamiana znalezionego tekstu
Gdy znajdziesz określony tekst w pliku PDF, możesz pójść o krok dalej, podświetlając go lub nawet zastępując nową treścią. Aspose.PDF for .NET umożliwia łatwe stylizowanie lub modyfikowanie dopasowanego tekstu przy użyciu obiektu TextFragment
.
Szukaj i podświetl tekst w PDF
Możesz wizualnie wyróżnić tekst, zmieniając jego kolor tła i czcionki.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
foreach (TextFragment fragment in absorber.TextFragments)
{
// Highlight by changing text appearance
fragment.TextState.BackgroundColor = Color.Yellow;
fragment.TextState.ForegroundColor = Color.Red;
fragment.TextState.FontStyle = FontStyles.Bold;
}
To jest przydatne do przeglądania, wprowadzania poprawek lub generowania raportów z adnotacjami.
Znajdź i zamień tekst
Potrzebujesz zredagować lub zaktualizować tekst w dokumencie? Po prostu zamień go bezpośrednio:
foreach (TextFragment fragment in absorber.TextFragments)
{
fragment.Text = "REDACTED";
}
Możesz nawet zastosować nowe formatowanie podczas zastępowania:
fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;
Wyróżnianie i zastępowanie tekstu programowo pozwala na automatyzację wielu zadań związanych z przetwarzaniem dokumentów, takich jak porządkowanie szablonów, aktualizowanie przestarzałych treści lub cenzurowanie danych prywatnych.
Szukaj na wszystkich stronach lub na określonych stronach
Domyślnie, Aspose.PDF przeszukuje wszystkie strony w pliku PDF. Ale czasami możesz chcieć ograniczyć wyszukiwanie do konkretnej strony lub zakresu stron—szczególnie podczas pracy z dużymi plikami lub gdy zawartość jest przewidywalna.
Aspose.PDF ułatwia to w obu przypadkach.
Szukaj na wszystkich stronach (domyślne)
Jeśli nie określisz strony, absorber automatycznie przeszukuje każdą stronę.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages
Szukaj na konkretnej stronie
Możesz także wyszukiwać pojedynczą stronę, bezpośrednio ją celując:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);
Wyszukiwanie na zakresie stron
Aby przeszukać niestandardowy zakres (np. strony 2 do 4), po prostu przejdź przez ten zakres:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
pdfDocument.Pages[i].Accept(absorber);
}
To podejście daje pełną kontrolę nad wydajnością i precyzją, szczególnie pomocne w przypadku zeskanowanych lub podzielonych dokumentów.
Zaawansowany przypadek użycia: Wyszukiwanie i redagowanie wrażliwych informacji
W dokumentach prawnych, HR lub finansowych powszechne jest ukrywanie wrażliwych treści—takich jak imiona, identyfikatory lub numery kont—przed udostępnieniem. Aspose.PDF for .NET ułatwia to, łącząc funkcje wyszukiwania z redakcją.
Możesz wyszukiwać terminy, a następnie zastosować czarną nakładkę za pomocą RedactionAnnotation
.
// Załaduj PDF i wyszukaj tekst
Document pdfDocument = new Document("sample.pdf");
// Szukaj nazwiska \"John Doe\"
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);
// Przejdź przez znalezione fragmenty i zamaskuj.
foreach (TextFragment fragment in absorber.TextFragments)
{
// Uzyskaj pozycję i wymiary
Aspose.Pdf.Rectangle rect = new Aspose.Pdf.Rectangle(
fragment.Position.XIndent,
fragment.Position.YIndent,
fragment.Position.XIndent + fragment.Rectangle.Width,
fragment.Position.YIndent + fragment.Rectangle.Height
);
// Utwórz adnotację redakcyjną
RedactionAnnotation redaction = new RedactionAnnotation(fragment.Page, rect)
{
FillColor = Color.Black,
Color = Color.Black
};
// Add and apply redaction
fragment.Page.Annotations.Add(redaction);
redaction.Redact();
}
// Save the modified document
pdfDocument.Save("SearchAndRedact.pdf");
Co się dzieje
- Tekst docelowy ("John Doe") został znaleziony i przykryty czarnym prostokątem.
- To nie jest tylko wizualne—usuwa treść z warstwy PDF, czyniąc ją niemożliwą do odzyskania z pliku.
Zdobyć darmową licencję
Teraz, gdy nauczyłeś się, jak wyszukiwać, wyodrębniać, podkreślać i redagować tekst w plikach PDF za pomocą Aspose.PDF for .NET, nadszedł czas, aby wprowadzić tę wiedzę w życie.
Spróbuj sam: Pobierz darmową tymczasową licencję i zacznij budować swoje własne inteligentne narzędzia PDF.
Szukaj w PDF: Darmowe zasoby
Chcesz wyjść poza samo wyszukiwanie tekstu w plikach PDF? Odkryj pełne możliwości Aspose.PDF for .NET dzięki tym darmowym, przyjaznym dla deweloperów zasobom:
Przewodnik dla dewelopera Dowiedz się, jak programowo tworzyć, modyfikować, konwertować i zabezpieczać pliki PDF. Aspose.PDF for .NET Documentation
Darmowe narzędzia online Konwertuj, scalaj, dziel i edytuj pliki PDF bezpośrednio w swojej przeglądarce. Aspose Free PDF Tools
API Reference Dowiedz się więcej o klasach, właściwościach i metodach dostępnych w Aspose.PDF for .NET, aby przyspieszyć rozwój. Aspose.PDF API Reference
Forum wsparcia Zadaj pytania, zgłaszaj problemy i uzyskaj odpowiedzi bezpośrednio od ekspertów Aspose. Aspose Support Forum
Te zasoby są darmowe i dostępne, aby pomóc Ci jak najlepiej wykorzystać swoją podróż w tworzeniu PDF.
Wniosek
Wyszukiwanie tekstu w plikach PDF to istotna funkcjonalność dla wielu aplikacji opartych na dokumentach—czy to wyciąganie danych, audyt treści, czy przygotowywanie plików do redakcji. Dzięki Aspose.PDF for .NET możesz łatwo przeprowadzać wyszukiwanie według słów kluczowych, używać wyrażeń regularnych, wyróżniać wyniki, a nawet redagować wrażliwe informacje z precyzją i kontrolą. Aspose.PDF oferuje przyjazne dla programistów API, które upraszcza złożone operacje na PDF—oszczędzając Twój czas przy jednoczesnym umożliwieniu potężnej automatyzacji.
Jeśli masz jakiekolwiek pytania lub potrzebujesz dalszej pomocy, nie wahaj się skontaktować z nami na naszym free support forum.