Sök och hämta textsida i PDF-fil

Introduktion

Har du någonsin behövt söka efter specifik text i ett PDF-dokument och extrahera det för vidare användning? Kanske bygger du en app som bearbetar dokument och kräver exakt dataextraktion, eller kanske behöver du bara analysera PDF-filer effektivt. Oavsett ditt fall är du på rätt plats! I den här handledningen ska vi dyka in i hur man söker och hämtar text från en sida i en PDF-fil med Aspose.PDF för .NET. Oavsett om du är en nybörjare eller en erfaren utvecklare, kommer den här guiden att leda dig genom varje steg på ett konversationsmässigt och engagerande sätt. Redo att rulla? Låt oss komma igång!

Förutsättningar

Innan vi går in i kodning, låt oss se till att du har allt du behöver:

  1. Aspose.PDF för .NET Library: Du kan ladda ner det frånhär eller få en gratis testversion från samma länk. För att köpa, gå tillAspose butik.
  2. .NET Framework: Du behöver en fungerande .NET-utvecklingsmiljö som Visual Studio.
  3. En PDF-fil: Du behöver ett exempel på en PDF-fil där vi kan söka och extrahera texten. För den här handledningen, låt oss anta att filen heterSearchAndGetTextPage.pdf.

Importera paket

Först och främst måste vi importera de nödvändiga namnområdena för att fungera med Aspose.PDF för .NET. Se till att dessa finns med överst i din kod.

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

Nu när vi har täckt förutsättningarna, låt oss dela upp koden steg för steg. Varje steg har tydligt beskrivits för att göra det enkelt att följa med.

Steg 1: Ställ in sökvägen till din dokumentkatalog

Innan du interagerar med din PDF-fil måste du definiera sökvägen dit PDF-dokumentet lagras. Detta säkerställer att programmet kan komma åt filen.

string dataDir = "YOUR DOCUMENT DIRECTORY";
  • dataDir: Detta är sökvägen till mappen där dina PDF-filer lagras. Ersätta"YOUR DOCUMENT DIRECTORY" med den faktiska sökvägen där PDF-filen finns.

Steg 2: Ladda PDF-dokumentet

Nästa steg är att ladda PDF-dokumentet i minnet så att du kan arbeta med det. Så här gör du:

Document pdfDocument = new Document(dataDir + "SearchAndGetTextPage.pdf");
  • Dokument: Det här är klassen Aspose.PDF som laddar PDF-filen.
  • pdfDocument: Variabeln där din PDF-fil lagras efter att ha laddats.

Steg 3: Skapa ett textabsorberande objekt

DeTextFragmentAbsorberklass låter dig söka efter specifik text i PDF:en. Låt oss skapa en instans av den här klassen för att hitta alla instanser av en given sökfras.

TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("Figure");
  • TextFragmentAbsorber: Denna klass ansvarar för att hitta och extrahera text från PDF:en.
  • “Figur”: Ersätt detta med vilken text du vill söka efter i PDF-filen.

Steg 4: Applicera Text Absorber på hela PDF-filen

När textabsorbatorn är inställd måste du be programmet att söka igenom alla sidor i PDF-filen.

pdfDocument.Pages.Accept(textFragmentAbsorber);
  • Acceptera(): Den här metoden tillämpar textabsorberaren på PDF-filen och skannar varje sida efter texten du angav.

Steg 5: Hämta och iterera genom den extraherade texten

Nu när vi har skannat PDF-filen är det dags att hämta resultaten och visa dem. Vi går igenom de extraherade textfragmenten.

TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
  • TextFragmentCollection: Denna samling innehåller alla instanser av textfragmenten som hittats av textabsorbatorn.

Steg 6: Gå igenom varje fragment och extrahera data

Vi ska nu gå igenomtextFragmentCollection och extrahera olika egenskaper för varje textsegment, såsom dess position, teckensnittsdetaljer och färg.

foreach (TextFragment textFragment in textFragmentCollection)
{
	foreach (TextSegment textSegment in textFragment.Segments)
	{
		Console.WriteLine("Text : {0} ", textSegment.Text);
		Console.WriteLine("Position : {0} ", textSegment.Position);
		Console.WriteLine("XIndent : {0} ", textSegment.Position.XIndent);
		Console.WriteLine("YIndent : {0} ", textSegment.Position.YIndent);
		Console.WriteLine("Font - Name : {0}", textSegment.TextState.Font.FontName);
		Console.WriteLine("Font - IsAccessible : {0} ", textSegment.TextState.Font.IsAccessible);
		Console.WriteLine("Font - IsEmbedded : {0} ", textSegment.TextState.Font.IsEmbedded);
		Console.WriteLine("Font - IsSubset : {0} ", textSegment.TextState.Font.IsSubset);
		Console.WriteLine("Font Size : {0} ", textSegment.TextState.FontSize);
		Console.WriteLine("Foreground Color : {0} ", textSegment.TextState.ForegroundColor);
	}
}
  • TextFragment: Varje fragment innehåller delar av den hittade texten.
  • TextSegment: Varje fragment kan ha flera segment som representerar olika delar av texten.
  • TextState: Detta ger detaljerad information om textens teckensnitt, storlek och färg.

I den här slingan skriver vi ut detaljer som den faktiska texten, dess position (X- och Y-koordinater), typsnittet, om typsnittet är inbäddat i PDF-filen och textens förgrundsfärg.

Slutsats

Och där har du det! Du har nu framgångsrikt sökt efter och extraherat text från en PDF-fil med Aspose.PDF för .NET. Det är otroligt hur mycket flexibilitet du har med det här biblioteket. Oavsett om du behöver söka efter specifik text i ett stort dokument, extrahera den eller analysera dess egenskaper, gör Aspose.PDF det enkelt. Plus, med koden vi täckte, är du väl rustad att anpassa den efter dina behov.

FAQ’s

Kan jag söka efter flera fraser samtidigt?

Ja, du kan ändra koden för att söka efter flera fraser genom att skapa fleraTextFragmentAbsorber föremål.

Hur kan jag extrahera text från en specifik sida?

Du kan rikta in dig på en specifik sida genom att användaTextFragmentAbsorber till en enda sida istället för hela dokumentet. Till exempel:pdfDocument.Pages[1].Accept(textFragmentAbsorber);.

Är Aspose.PDF för .NET gratis?

Aspose.PDF är en kommersiell produkt, men du kan använda den med engratis provperiod.

Kan jag extrahera bilder från PDF:en med Aspose.PDF?

Ja, Aspose.PDF låter dig extrahera bilder utöver text. Kontrolleradokumentation för mer information.

Vad händer om jag behöver mer hjälp eller stöd?

Du kan alltid få hjälp avAspose Support Forum.