Sök efter reguljära uttryck i PDF-fil

Introduktion

När du har att göra med stora PDF-dokument kan du finna att du söker efter specifika mönster eller format som datum, telefonnummer eller annan strukturerad data. Att manuellt gå igenom PDF:en kan vara tråkigt, eller hur? Det är här det är praktiskt att använda ett reguljärt uttryck (regex). I den här handledningen kommer vi att utforska hur man söker efter ett reguljärt uttrycksmönster i en PDF-fil med Aspose.PDF för .NET. Den här guiden går igenom varje steg så att du enkelt kan implementera det i din .NET-applikation.

Förutsättningar

Innan vi dyker in i steg-för-steg-handledningen, låt oss gå igenom vad du behöver ha på plats:

  • Aspose.PDF för .NET: Du måste ha detta bibliotek installerat. Om du inte har installerat det än kan du göra detladda ner den här.
  • IDE: Visual Studio eller någon annan C#-kompatibel IDE.
  • .NET Framework: Se till att ditt projekt är konfigurerat med rätt version av .NET Framework.
  • Grundläggande kunskaper om C#: Även om den här guiden är detaljerad, kommer en grundläggande förståelse av C# att vara till hjälp.

Importera paket

Till att börja med måste du importera de nödvändiga namnrymden från Aspose.PDF för .NET till ditt projekt. Dessa paket är viktiga för att arbeta med PDF-filer och utföra sökoperationer med regex.

using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;

Låt oss dela upp processen att söka efter reguljära uttryck i en PDF-fil med Aspose.PDF i flera steg.

Steg 1: Konfigurera dokumentkatalogen

Varje PDF-operation börjar med att ange var ditt dokument finns. Du måste definiera sökvägen till din PDF-fil, som lagras idataDir variabel.

Steg 1.1: Definiera din dokumentsökväg

// Definiera sökvägen till ditt PDF-dokument
string dataDir = "YOUR DOCUMENT DIRECTORY";

Ersätta"YOUR DOCUMENT DIRECTORY" med den faktiska sökvägen till din PDF-fil. Detta steg är avgörande eftersom det pekar din kod till filen du vill arbeta med.

Steg 1.2: Öppna PDF-dokumentet

Därefter måste du öppna PDF-dokumentet med hjälp avDocument klass från Aspose.PDF.

// Öppna dokumentet
Document pdfDocument = new Document(dataDir + "SearchRegularExpressionAll.pdf");

Här,"SearchRegularExpressionAll.pdf" är exempel-PDF-filen där vi kommer att utföra regex-sökningen.

Steg 2: Konfigurera TextFragmentAbsorber

Det är här magin händer! DeTextFragmentAbsorber klass hjälper till att fånga fragment av text som matchar ett specifikt mönster eller reguljärt uttryck.

Låt oss ställa in absorbatorn för att hitta mönster med hjälp av ett regex. I det här fallet söker vi efter ett mönster av år som “1999-2000”.

// Skapa TextAbsorber-objekt för att hitta alla fraser som matchar det reguljära uttrycket
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // Som 1999-2000

Det reguljära uttrycket\\d{4}-\\d{4} letar efter ett mönster med fyra siffror följt av ett bindestreck och ytterligare fyra siffror, vilket är typiskt för årsintervall.

Steg 3: Aktivera sökning efter reguljära uttryck

För att säkerställa att sökoperationen tolkar mönstret som ett reguljärt uttryck måste du konfigurera sökalternativen med hjälp avTextSearchOptions klass.

// Ställ in textsökningsalternativ för att ange användning av reguljära uttryck
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

Ställa inTextSearchOptions tilltrue säkerställer att absorbenten använder reguljära uttrycksbaserad sökning snarare än vanlig text.

Steg 4: Acceptera Text Absorber

I det här skedet applicerar du textabsorberaren på PDF-dokumentet så att det kan utföra sökningen. Detta görs genom att ringa tillAccept metod påPages objektet för PDF-dokumentet.

// Acceptera absorbenten för alla sidor
pdfDocument.Pages.Accept(textFragmentAbsorber);

Detta kommando bearbetar alla sidor i PDF-filen och letar efter all text som matchar det reguljära uttrycket.

Steg 5: Extrahera och visa resultaten

När sökningen är klar måste du extrahera resultaten. DeTextFragmentAbsorber lagrar dessa resultat i enTextFragmentCollection. Du kan gå igenom den här samlingen för att komma åt och visa varje matchande textfragment.

Steg 5.1: Hämta de extraherade textfragmenten

// Hämta de extraherade textfragmenten
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

Nu när du har samlat fragmenten är det dags att gå igenom dem och visa relevanta detaljer som text, position, teckensnittsdetaljer och mer.

Steg 5.2: Slinga genom fragmenten

// Gå igenom fragmenten
foreach (TextFragment textFragment in textFragmentCollection)
{
    Console.WriteLine("Text : {0} ", textFragment.Text);
    Console.WriteLine("Position : {0} ", textFragment.Position);
    Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
    Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
    Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
    Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
    Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
    Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
    Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
    Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}

För varjeTextFragment, skrivs detaljer som teckenstorlek, teckensnittsnamn och position ut. Detta hjälper inte bara att hitta texten utan ger dig också dess exakta formatering och plats.

Slutsats

Där har du det! Att söka efter mönster i en PDF-fil med reguljära uttryck är otroligt kraftfullt, särskilt för strukturerad text som datum, telefonnummer och liknande mönster. Aspose.PDF för .NET ger ett sömlöst sätt att utföra sådana operationer med lätthet. Nu kan du utnyttja kraften i reguljära uttryck för att automatisera PDF-textsökning, vilket gör ditt arbetsflöde mer effektivt.

FAQ’s

Kan jag söka efter flera mönster i en PDF?

Ja, du kan köra fleraTextFragmentAbsorber objekt, vart och ett med olika regexmönster, över samma PDF.

Stöder Aspose.PDF sökning efter skiftlägesokänsliga mönster?

Absolut! Du kan konfigureraTextSearchOptions för att göra sökningen skiftlägesokänslig.

Finns det en gräns för storleken på PDF-filen jag kan söka igenom?

Det finns ingen strikt gräns, men prestandan kan variera beroende på storleken på PDF:en och komplexiteten i regexmönstret.

Kan jag markera den hittade texten i PDF:en?

Ja, Aspose.PDF låter dig markera eller till och med ersätta texten när den har hittats med hjälp av absorberaren.

Hur hanterar jag fel om mönstret inte hittas?

Om inga matchningar hittas,TextFragmentCollection kommer att vara tom. Du kan hantera detta scenario med en enkel kontroll innan du går igenom resultaten.