
Att söka efter specifik text i PDF dokument är en vanlig uppgift i dokumenthanteringssystem, verktyg för juridisk granskning, fakturaprocessorer och andra företagsapplikationer. Oavsett om du försöker lokalisera ett nyckelord, extrahera vissa värden eller dölja känslig information kan automatisering av PDF-sökning spara mycket tid och ansträngning.
I det här blogginlägget kommer du att lära dig hur man söker text i PDF-filer programmässigt med C#. Vi kommer att gå igenom de viktigaste funktionerna steg för steg med praktiska C# kodexempel.
Denna artikel täcker följande ämnen:
- C# Bibliotek för att Sök i PDF Dokument
- Söktext i PDF med C#
- Fallokänslig och hela ordsökning i PDF
- Sökning med Regular Expressions i PDF
- Sök och extrahera text med positionsdetaljer
- Markerar eller Ersätter Hittad Text
- Sök över alla sidor eller specifika sidor
- Sök och radera känslig information
- Gratis resurser
C# Bibliotek för att söka i PDF-dokument
Aspose.PDF for .NET förenklar processen för att söka text i PDF-filer med hjälp av C#. Det gör att du kan hitta exakta ord, matcha mönster med hjälp av reguljära uttryck, och till och med framhäva eller ersätta matchad text – allt med bara några få rader kod. Det här kraftfulla biblioteket erbjuder robusta funktioner för att manipulera PDF-dokument. Det gör det möjligt för utvecklare att enkelt implementera sökfunktioner. Med Aspose.PDF kan du snabbt hitta ord i en PDF, vilket gör det till ett ovärderligt verktyg för mjukvaruutvecklare.
Innan du dyker ner i PDF-textsökning behöver du ställa in din utvecklingsmiljö. Följ dessa steg för att komma igång med Aspose.PDF för .NET:
1. Installera Aspose.PDF för .NET.
Ladda ner det från releases eller installera det via NuGet.Öppna ditt .NET-projekt i Visual Studio och kör följande kommando i NuGet Package Manager Console:
PM> Install-Package Aspose.PDF
Detta kommando lägger till Aspose.PDF-biblioteket till ditt projekt så att du kan få tillgång till dess kraftfulla PDF-behandlingsfunktioner.
2. Importera nödvändiga namnområden
I toppen av din C#-fil, lägg till dessa using-direktiv:
using Aspose.Pdf;
using Aspose.Pdf.Text;
Nu är du redo att börja söka text inuti dina PDF-filer med Aspose.PDF:s API.
Söktext i PDF med C#
Med Aspose.PDF för .NET kan du enkelt söka efter specifika ord eller fraser i en PDF, lokalisera alla deras instanser och vidta åtgärder som att markera dem eller extrahera deras detaljer.
Följ dessa steg för att utföra en grundläggande textsökning:
- Ladda måldokumentet i PDF-format med hjälp av Document-klassen.
- Skapa en TextFragmentAbsorber för att definiera sökordet.
- Kör absorbersystemet över alla sidor med Accept()-metoden.
- Hämta alla matchande textfragment.
- Print the number of matches found.
- Loopa genom och visa varje match med dess sidnummer.
Följande kodexempel implementerar dessa steg.
// Ladda PDF-filen
Document pdfDocument = new Document("sample.pdf");
// Skapa en textabsorber med söknyckelordet
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");
// Applicera absorberaren på alla sidor
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Get the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Print how many times the keyword was found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loopa igenom och skriv ut varje funnen 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
Detta exempel visar en enkel nyckelordsökning som fungerar över alla sidor i PDF-filen. Du kommer att se den matchande texten tillsammans med dess sidnummer.
Förstå de nyckelklasser som används i PDF-sökning
För att bättre förstå vad som händer i koden, här är en snabb sammanfattning av de viktigaste klasserna och metoderna som är involverade:
Dokument
: Representerar hela PDF-filen. Det ger åtkomst till sidor, innehåll och struktur.TextFragmentAbsorber
: Hittar alla förekomster av en given sträng eller ett mönster inom PDF:en. Du kan också aktivera funktioner som skiftlägesokänslig eller regex-baserad sökning.Accept()
: Tillämpa absorbenten på varje sida. Det skannar igenom dokumentet och samlar matchande fragment.TextFragments
: En samling av alla matchande textfragment som returneras av absorbers.TextFragment
: Varje individuell match med detaljer som innehåll, position och sidnummer.
Sökning utan hänsyn till versaler och hela ord med C#
När du söker i PDF-innehåll behöver du kontrollera hur systemet hittar träffar för att säkerställa att resultaten är korrekta. Ibland vill du ignorera versaler ("Invoice" vs. "invoice"), eller så vill du matcha hela ord endast - inte delvisa träffar inom andra ord.
Aspose.PDF för .NET ger dig verktygen för att göra båda.
Fall-okänslig sökning
Som standard är sökningar skiftlägeskänsliga. För att ignorera bokstavsstorlek, använd TextSearchOptions
med IgnoreCase
aktiverat:
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Skapa en текстabsorber med ett skiftlägesokänsligt reguljärt uttryck
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");
// Ställ in text sökalternativ för att möjliggöra användning av reguljära uttryck.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Applicera absorbenten på alla sidor
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Hämta de matchande textfragmenten
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loopa genom och visa varje funnen textfragment
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Detta kommer att hitta både "Invoice", "invoice", "INVOICE" och andra variationer.
Match hela ord endast
Du kan också förhindra delvisa träffar. Till exempel, att söka efter car
ska inte matcha care
eller scar
.
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Skapa en textabsorber med ett reguljärt uttrycksmönster för helordsmatchning
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");
// Ställ in text sökalternativ för att möjliggöra användning av reguljära uttryck
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Applicera absorberaren på alla sidor
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Hämta de matchande textfragmenten
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loopa igenom och visa varje funnen textfragment
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Detta säkerställer att endast fristående instanser av ordet “bil” matchas.
Söka med reguljära uttryck i PDF
I vissa fall behöver du hitta mer än ett specifikt ord—du vill matcha mönster som datum, e-postadresser eller referensnummer. Det är där reguljära uttryck (regex) kommer in.
Aspose.PDF för .NET gör att du kan använda regex för avancerad textsökning i alla delar av ditt PDF-dokument.
Exempel: Hitta alla datum i en PDF
Låt oss säga att du vill hitta alla datum i formatet dd/mm/yyyy
:
// Ladda PDF och sök efter text
Document pdfDocument = new Document("sample.pdf");
// Aktivera regex i sökalternativ
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
IsRegularExpressionUsed = true
};
// Skapa absorber med datummönster
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);
// Applicera absorber på sidor
pdfDocument.Pages.Accept(absorber);
// Loopa och skriv ut funna mönster
foreach (TextFragment fragment in absorber.TextFragments)
{
Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}
Andra användbara mönster:
- 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}
- Invoice Numbers:
INV-\d+
Regex utökar dina sökmöjligheter långt bortom statisk text och hjälper dig att extrahera strukturerad data från ostrukturerade dokument.
Sök och extrahera text med positionsdetaljer
Ibland är det inte tillräckligt att hitta texten - du kan behöva veta exakt var den förekommer i PDF-filen. Aspose.PDF låter dig extrahera sidnumret, koordinaterna och formateringsdetaljerna för varje träff.
Denna funktion är särskilt användbar för att bygga index, tagga dokument eller skapa klickbara länkar.
Exempel: Hämta positionen för varje träff
// Ladda PDF och sök efter text
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
// Få matchande fragment
TextFragmentCollection fragments = absorber.TextFragments;
// Skriv ut position och text för varje match
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
------------
Du vet nu exakt var ordet `invoice” förekommer, tillsammans med hur det är ställt. Denna detaljnivå öppnar dörren för avancerad bearbetning, såsom anteckningar, verktygstips eller dynamiska markeringar.
Markering eller Ersättning av Hittad Text
När du har lokaliserat specifik text i en PDF kan du ta det ett steg längre genom att markera den eller till och med ersätta den med nytt innehåll. Aspose.PDF för .NET låter dig styla eller ändra den matchade texten enkelt med hjälp av TextFragment
-objektet.
Sök och Markera Text i PDF
Du kan visuellt markera texten genom att ändra dess bakgrunds- och textfärg.
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;
}
Detta är användbart för granskning, redigering eller generering av annoterade rapporter.
Hitta och ersätt text
Behöver du redigera eller uppdatera texten i dokumentet? Byt bara ut den direkt:
foreach (TextFragment fragment in absorber.TextFragments)
{
fragment.Text = "REDACTED";
}
Du kan till och med använda ny formatering när du ersätter:
fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;
Att göra texten synlig och byta ut den programatiskt gör att du kan automatisera många dokumenthanteringsuppgifter, som att städa upp mallar, uppdatera föråldrad innehåll eller censurera privat information.
Sök över alla sidor eller specifika sidor
Som standard söker Aspose.PDF över alla sidor i en PDF. Men ibland kan du vilja begränsa sökningen till en specifik sida eller ett intervall av sidor—särskilt när du arbetar med stora filer eller när innehållet är förutsägbart.
Aspose.PDF gör det enkelt att göra båda.
Sök på alla sidor (Standard)
Om du inte specificerar en sida söker absorbersystemet automatiskt igenom varje sida.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages
Sök på en specifik sida
Du kan också söka en enskild sida genom att rikta in dig direkt på den:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);
Sök på ett intervall av sidor
För att söka i ett anpassat intervall (t.ex. sidorna 2 till 4), loopa bara genom intervallet:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
pdfDocument.Pages[i].Accept(absorber);
}
Denna metod ger dig full kontroll över prestanda och precision, vilket är särskilt användbart för skannade eller avdelade dokument.
Avancerad användningsfall: Sök och redigera känslig information
I juridiska, HR- eller finansiella dokument är det vanligt att dölja känsligt innehåll—som namn, ID-nummer eller kontonummer—före delning. Aspose.PDF för .NET gör detta enkelt genom att kombinera sökning med redigeringsfunktioner.
Du kan söka efter termer och sedan applicera en svart överläggning med RedactionAnnotation
.
// Ladda PDF och sök efter text
Document pdfDocument = new Document("sample.pdf");
// Sök efter namnet "John Doe"
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);
// Loop through found fragments and redact
foreach (TextFragment fragment in absorber.TextFragments)
{
// Hämta position och dimensioner
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
);
// Skapa en redigeringsanteckning
RedactionAnnotation redaction = new RedactionAnnotation(fragment.Page, rect)
{
FillColor = Color.Black,
Color = Color.Black
};
// Lägg till och tillämpa redigering
fragment.Page.Annotations.Add(redaction);
redaction.Redact();
}
// Save the modified document
pdfDocument.Save("SearchAndRedact.pdf");
Vad händer
- Den måltexten ("John Doe") hittas och täcks med en svart ruta.
- Detta är inte bara visuellt—det tar bort innehållet från PDF-lagret, vilket gör det oåterkalleligt från filen.
Få en gratis licens
Nu när du har lärt dig hur man söker, extraherar, markerar och redigerar text i PDF-filer med Aspose.PDF för .NET, är det dags att sätta den kunskapen i bruk.
Prova själv: Ladda ner en gratis tillfällig licens och börja bygga dina egna smarta PDF-verktyg.
Sök i PDF: Gratis resurser
Vill du gå bortom att bara söka text i PDF-filer? Utforska de fulla möjligheterna med Aspose.PDF för .NET med dessa gratis, utvecklarvänliga resurser:
Utvecklarens guide Lär dig hur man skapar, modifierar, konverterar och säkrar PDF-filer programmässigt. Aspose.PDF för .NET Dokumentation
Gratis onlineverktyg Konvertera, slå ihop, dela och redigera PDF-filer direkt i din webbläsare. Aspose Free PDF Tools
API Referens Lär dig mer om klasser, egenskaper och metoder som finns i Aspose.PDF för .NET för att påskynda din utveckling. Aspose.PDF API Reference
Support Forum Ställ frågor, rapportera problem och få svar direkt från Aspose-experter. Aspose Support Forum
Dessa resurser är gratis och tillgängliga för att hjälpa dig få ut det mesta av din PDF-utvecklingsresa.
Slutsats
Att söka text i PDF-filer är en viktig funktion för många dokumentbaserade applikationer—oavsett om du extraherar data, granskar innehåll eller förbereder filer för redigering. Med Aspose.PDF för .NET kan du enkelt utföra nyckelsökningar, använda reguljära uttryck, markera resultat och till och med dölja känslig information med noggrannhet och kontroll. Aspose.PDF erbjuder ett utvecklarvänligt API som förenklar komplexa PDF-operationer—och sparar tid samtidigt som det möjliggör kraftfull automation.
Om du har några frågor eller behöver ytterligare hjälp, tveka inte att kontakta oss på vårt free support forum.