
Hledání konkrétního textu v PDF dokumentech je běžným úkolem v systémech správy dokumentů, nástrojích pro právní revizi, procesorech faktur a dalších podnikovým aplikacích. Ať už se snažíte najít klíčové slovo, extrahovat určité hodnoty nebo redigovat citlivé informace, automatizace hledání v PDF může ušetřit spoustu času a úsilí.
V tomto příspěvku na blogu se naučíte, jak programově vyhledávat text v PDF souborech pomocí C#. Provedeme vás klíčovými funkcemi krok za krokem s praktickými příklady kódu v C#.
Tento článek se zabývá následujícími tématy:
- C# Knihovna pro vyhledávání v PDF Dokumentech
- Hledání textu v PDF pomocí C#
- Hledání bez ohledu na velikost písmen a celých slov v PDF
- Vyhledávání pomocí regulárních výrazů v PDF
- Hledat a extrahovat text s podrobnými informacemi o pozici
- Zvýraznění nebo nahrazení nalezeného textu
- Hledat na všech stránkách nebo na konkrétních stránkách
- Hledejte a redigujte citlivé informace
- Bezplatné zdroje
Knihovna C# pro vyhledávání v PDF dokumentech
Aspose.PDF for .NET zjednodušuje proces vyhledávání textu v PDF souborech pomocí C#. Umožňuje vám najít přesná slova, porovnávat vzory pomocí regulárních výrazů a dokonce zvýrazňovat nebo nahrazovat shodný text—vše s pouhými několika řádky kódu. Tato mocná knihovna poskytuje robustní funkce pro manipulaci s PDF dokumenty. Umožňuje vývojářům snadno implementovat vyhledávací funkce. S Aspose.PDF můžete rychle najít slova v PDF, což z něj činí neocenitelný nástroj pro softwarové vývojáře.
Předtím, než se ponoříte do vyhledávání v textu PDF, musíte nastavit své vývojové prostředí. Postupujte podle těchto kroků, abyste začali s Aspose.PDF for .NET:
1. Nainstalujte Aspose.PDF for .NET.
Stáhněte si to z releases nebo to nainstalujte přes NuGet.Otevřete svůj .NET projekt ve Visual Studiu a spusťte následující příkaz v konzole správce balíčků NuGet:
PM> Install-Package Aspose.PDF
Tento příkaz přidává knihovnu Aspose.PDF do vašeho projektu, abyste mohli využívat její silné funkce pro zpracování PDF.
2. Importovat požadované jmenné prostory
Na začátek vašeho C# souboru přidejte tyto direktivy using:
using Aspose.Pdf;
using Aspose.Pdf.Text;
Nyní jste připraveni začít hledat text uvnitř svých PDF souborů pomocí API Aspose.PDF.
Hledání textu v PDF pomocí C#
S Aspose.PDF for .NET můžete snadno vyhledávat konkrétní slova nebo fráze v PDF, najít všechny jejich výskyty a provést akce, jako je jejich zvýraznění nebo extrakce jejich detailů.
Následujte tyto kroky pro provedení základního vyhledávání textu:
- Načtěte cílový PDF soubor pomocí třídy Document.
- Vytvořte TextFragmentAbsorber pro definování vyhledávacího klíčového slova.
- Spusťte absorpční zařízení na všech stránkách pomocí metody Accept().
- Získejte všechny odpovídající textové fragmenty.
- Tiskněte počet nalezených zápasů.
- Projděte smyčkou a zobrazte každý zápas s jeho číslem stránky.
Následující příklad kódu implementuje tyto kroky.
// Načtěte soubor PDF
Document pdfDocument = new Document("sample.pdf");
// Vytvořte textový absorbér se search keyword
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");
// Použijte absorpční prostředek na všechny stránky
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Získejte shodné textové fragmenty
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Print how many times the keyword was found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Procházejte a vytiskněte každý nalezený text
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
Tento příklad ukazuje jednoduché vyhledávání podle klíčových slov, které funguje na všech stránkách v PDF. Uvidíte odpovídající text spolu s jeho číslem stránky.
Porozumění klíčovým třídám používaným v PDF vyhledávání
Abychom lépe porozuměli tomu, co se v kódu děje, zde je rychlý přehled klíčových tříd a metod, které jsou zapojeny:
Document
: Reprezentuje celý PDF soubor. Poskytuje přístup k stránkám, obsahu a struktuře.TextFragmentAbsorber
: Najde všechny výskyty daného řetězce nebo vzoru v PDF. Můžete také povolit funkce jako hledání bez ohledu na velikost písmen nebo na základě regulárních výrazů.Accept()
: Aplikuje absorpční prvek na každou stránku. Prochází dokumentem a shromažďuje odpovídající fragmenty.TextFragments
: Kolekce všech nalezených textových fragmentů vrácených absorbérem.TextFragment
: Každý jednotlivý zápas s podrobnostmi, jako je obsah, pozice a číslo stránky.
Hledání bez ohledu na velikost písmen a celých slov pomocí C#
Když hledáte obsah PDF, musíte ovládat, jak systém hledá shody, abyste zajistili přesné výsledky. Někdy chcete ignorovat velikost písmen ("Faktura" vs. "faktura"), nebo chcete odpovídat pouze celým slovům – ne částečným shodám uvnitř jiných slov.
Aspose.PDF for .NET vám poskytuje nástroje k obojímu.
Vyhledávání bez ohledu na velikost písmen
Podle výchozího nastavení jsou vyhledávání citlivá na velikost písmen. Chcete-li ignorovat velikost písmen, použijte TextSearchOptions
s povolenou možností IgnoreCase
:
// Načtěte soubor PDF
Document pdfDocument = new Document("sample.pdf");
// Vytvořte textový absorber s regulárním výrazem bez ohledu na velikost písmen.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");
// Nastavte možnosti textového vyhledávání pro povolení používání regulárních výrazů.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Aplikujte absorbér na všechny stránky
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Získejte odpovídající textové fragmenty
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Procházejte a zobrazte každý nalezený textový fragment
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Tohle najde jak "Faktura", "faktura", "FAKTURA", tak i další varianty.
Shodovat pouze celé slova
Můžete také zabránit částečným shodám. Například hledání car
by nemělo odpovídat care
nebo scar
.
// Načtěte soubor PDF
Document pdfDocument = new Document("sample.pdf");
// Vytvořte vstřebávač textu s regulárním výrazem pro shodu celého slova
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");
// Nastavte možnosti vyhledávání textu pro povolení používání regulárních výrazů.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Použijte absorpční prostředek na všechny stránky
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Získejte shodné textové fragmenty
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Procházejte a zobrazte každý nalezený textový fragment
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
To zajišťuje, že jsou shodovány pouze samostatné instance slova auto
.
Vyhledávání pomocí regulárních výrazů v PDF
V určitých případech musíte najít více než konkrétní slovo - chcete porovnat vzory jako data, e-mailové adresy nebo referenční čísla. V tom přicházejí na řadu regulární výrazy (regex).
Aspose.PDF for .NET vám umožňuje používat regex pro pokročilé vyhledávání textu v jakékoli části vašeho PDF dokumentu.
Příklad: Najděte všechna data v PDF
Řekněme, že chcete najít všechny data ve formátu dd/mm/yyyy
:
// Načtěte PDF a vyhledejte text
Document pdfDocument = new Document("sample.pdf");
// Povolte regex v možnostech vyhledávání
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
IsRegularExpressionUsed = true
};
// Vytvořte absorpční prvek s datovým vzorem.
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);
// Aplikujte absorpční prostředek na stránky
pdfDocument.Pages.Accept(absorber);
// Smyčka a tisk nalezených vzorů
foreach (TextFragment fragment in absorber.TextFragments)
{
Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}
Další užitečné vzory:
- 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}
- Čísla faktur:
INV-\d+
Regex rozšiřuje vaše vyhledávací možnosti daleko za rámec statického textu a pomáhá vám extrahovat strukturovaná data z nestrukturovaných dokumentů.
Hledat a extrahovat text s podrobnými pozicemi
Někdy nestačí najít text – může být potřeba vědět, kde přesně se v PDF objevuje. Aspose.PDF vám umožňuje extrahovat číslo stránky, souřadnice a podrobnosti o formátování každé shody.
Tato funkce je obzvlášť užitečná pro vytváření indexů, označování dokumentů nebo vytváření klikacích odkazů.
Příklad: Získejte pozici každého shodování
// Načíst PDF a hledat text
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
// Získejte shodné fragmenty
TextFragmentCollection fragments = absorber.TextFragments;
// Vytiskněte pozici a text pro každé shoda
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
------------
Nyní přesně víte, kde se slovo faktura
objevuje, spolu s tím, jak je stylizováno. Tato úroveň detailu otevírá dveře pro pokročilé zpracování, jako jsou anotace, tooltipy nebo dynamické zvýraznění.
Zvýraznění nebo nahrazení nalezeného textu
Jakmile naleznete konkrétní text v PDF, můžete jít o krok dále tím, že ho zvýrazníte nebo dokonce nahradíte novým obsahem. Aspose.PDF for .NET vám umožňuje snadno stylizovat nebo upravit shodný text pomocí objektu TextFragment
.
Hledání a zvýraznění textu v PDF
Můžete vizuálně zvýraznit text změnou pozadí a barvy písma.
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 je užitečné pro přezkoumávání, zpracovávání návrhů nebo vytváření anotovaných zpráv.
Najít a nahradit text
Potřebujete text v dokumentu redigovat nebo aktualizovat? Prostě ho přímo nahraďte:
foreach (TextFragment fragment in absorber.TextFragments)
{
fragment.Text = "REDACTED";
}
Můžete dokonce použít nové formátování při nahrazování:
fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;
Zvýraznění a nahrazení textu programově vám umožňuje automatizovat mnoho úloh zpracování dokumentů, jako je úprava šablon, aktualizace zastaralého obsahu nebo cenzurování soukromých údajů.
Hledat na všech stránkách nebo na konkrétních stránkách
Ve výchozím nastavení Aspose.PDF hledá na všech stránkách v PDF. Ale někdy můžete chtít omezit vyhledávání na konkrétní stránku nebo rozsah stránek - zvláště když pracujete s velkými soubory nebo když je obsah předvídatelný.
Aspose.PDF to usnadňuje.
Hledat na všech stránkách (výchozí)
Pokud neudáte stránku, absorpční zařízení automaticky vyhledává na každé stránce.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages
Hledat na konkrétní stránce
Můžete také vyhledávat na jednotlivé stránce tím, že ji cíleně zaměříte:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);
Hledání na rozsahu stránek
Chcete-li vyhledat vlastní rozsah (např. stránky 2 až 4), jednoduše projděte tímto rozsahem:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
pdfDocument.Pages[i].Accept(absorber);
}
Tento přístup vám dává plnou kontrolu nad výkonem a přesností, což je zejména užitečné pro skenované nebo rozčleněné dokumenty.
Pokročilý případ použití: Vyhledávání a redakce citlivých informací
V právních, HR nebo finančních dokumentech je obvyklé skrývat citlivý obsah—jako jsou jména, identifikační čísla nebo čísla účtů—před sdílením. Aspose.PDF for .NET to usnadňuje kombinací funkcí vyhledávání a redakce.
Můžete hledat termíny a poté použít černý překryv pomocí RedactionAnnotation
.
// Načtěte PDF a hledejte text
Document pdfDocument = new Document("sample.pdf");
// Hledejte jméno \"John Doe\"
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);
// Procházejte nalezené fragmenty a redigujte
foreach (TextFragment fragment in absorber.TextFragments)
{
// Získejte pozici a rozměry
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
);
// Vytvořte poznámku o redakci.
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 se stane
- Cílový text (
John Doe
) byl nalezen a zakryt černým boxem. - Toto není jen vizuální—odstraňuje obsah z vrstvy PDF, což jej činí neobnovitelným z souboru.
Získejte bezplatnou licenci
Nyní, když jste se naučili, jak hledat, extrahovat, zvýrazňovat a redigovat text v PDF pomocí Aspose.PDF for .NET, je čas tuto znalost uvést do praxe.
Zkuste to sami: Stáhněte si zdarma dočasnou licenci a začněte vytvářet své vlastní chytré nástroje pro PDF.
Search in PDF: Free Resources
Chcete jít dál než jen hledání textu v PDF? Prozkoumejte plné možnosti Aspose.PDF for .NET s těmito bezplatnými, vývojářům přátelskými zdroji:
Průvodce pro vývojáře Naučte se, jak programově vytvářet, modifikovat, konvertovat a zabezpečovat PDF soubory. Aspose.PDF for .NET Documentation
Bezplatné online nástroje Převádějte, slučujte, rozdělujte a upravujte PDF soubory přímo ve svém prohlížeči. Aspose Free PDF Tools
API Reference Zjistěte více o třídách, vlastnostech a metodách dostupných v Aspose.PDF for .NET, které urychlí váš vývoj. Aspose.PDF API Reference
Podpora fóra Položte otázky, hlaste problémy a získejte odpovědi přímo od odborníků na Aspose. Aspose Support Forum
Tyto zdroje jsou zdarma a k dispozici, aby vám pomohly co nejlépe využít vaši cestu vývojem PDF.
Závěr
Hledání textu v PDF souborech je klíčová funkce pro mnoho aplikací založených na dokumentech—bez ohledu na to, zda extrahujete data, auditujete obsah, nebo připravujete soubory k editaci. S Aspose.PDF for .NET můžete snadno provádět vyhledávání podle klíčových slov, používat regulární výrazy, zvýraznit výsledky a dokonce přesně a kontrolovaně redigovat citlivé informace. Aspose.PDF nabízí API vhodné pro vývojáře, které zjednodušuje složité operace PDF—šetří vám čas a umožňuje silnou automatizaci.
Pokud máte jakékoliv dotazy nebo potřebujete další pomoc, neváhejte se obrátit na naše free support forum.