Markera karaktär i PDF-fil

Introduktion

När det gäller att arbeta med PDF-filer uppstår ofta behovet av att markera text eller tecken – oavsett om det är för akademiska ändamål, redigering eller bara för att förbättra läsbarheten. Föreställ dig att du har ett vackert dokument, men du vill betona vissa delar. Det är där highlighting kommer in i bilden! I den här handledningen kommer vi att dyka ner i hur man markerar tecken i en PDF-fil med det kraftfulla Aspose.PDF för .NET-biblioteket.

Förutsättningar

Innan vi hoppar in i koden, låt oss se till att vi har allt vi behöver. Här är vad du behöver:

  1. En utvecklingsmiljö: Denna handledning förutsätter att du arbetar i Visual Studio eller en liknande .NET IDE.
  2. Aspose.PDF för .NET Library: Om du inte redan har gjort det kan duladda ner den här och lägg till det i ditt projekt.
  3. Grundläggande kunskaper om C#: En primer i C#-programmering hjälper dig att enkelt förstå implementeringen.
  4. Ett PDF-dokument: Du bör ha ett exempel på en PDF-fil redo att arbeta med. Du kan skapa ett eller använda ett befintligt dokument.

Importera paket

För att komma igång måste vi importera de nödvändiga namnrymden. För att göra detta vill du inkludera dem överst i din C#-fil:

using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Facades;
using Aspose.Pdf.Devices;
using Aspose.Pdf.Text;
using System;
using System.Drawing;

Dessa paket är viktiga för att skapa, manipulera och bearbeta PDF-dokument med Aspose-biblioteket.

Låt oss nu dela upp processen i lättsmälta steg för att markera tecken i din PDF.

Steg 1: Initiera PDF-dokumentet

Det första steget är att initiera ditt PDF-dokument. Detta innebär att ladda PDF-filen du kommer att arbeta med. Så här gör du:

string dataDir = "YOUR DOCUMENT DIRECTORY"; // Se till att ställa in rätt sökväg.
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(dataDir + "input.pdf");

det här utdraget, ersättYOUR DOCUMENT DIRECTORY med den faktiska sökvägen på din maskin där din inmatade PDF-fil finns. DeAspose.Pdf.Document klass instansieras för att ladda din PDF.

Steg 2: Ställ in renderingsprocessen

Därefter måste vi förbereda renderingsprocessen för vårt dokument. Detta är viktigt för att korrekt markera tecknen på sidan.

int resolution = 150; // Ställ in upplösningen för bildtagning.
using (MemoryStream ms = new MemoryStream())
{
    PdfConverter conv = new PdfConverter(pdfDocument);
    conv.Resolution = new Resolution(resolution, resolution);
    conv.GetNextImage(ms, System.Drawing.Imaging.ImageFormat.Png);
    Bitmap bmp = (Bitmap)Bitmap.FromStream(ms);

Vi definierar en upplösning för tydlighetens skull, så att texten kan återges korrekt. DePdfConverterförvandlar PDF-sidorna till bilder så att vi kan rita på dem.

Steg 3: Skapa ett grafikobjekt för ritning

Efter att ha ställt in ritprocessen måste vi skapa ett grafikobjekt där vi ska framhäva:

using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp))
{
    float scale = resolution / 72f; // Skalfaktor.
    gr.Transform = new System.Drawing.Drawing2D.Matrix(scale, 0, 0, -scale, 0, bmp.Height);

Här skapar vi grafikobjektet från bitmappsbilden. Transformationen hjälper till att justera renderingen för att matcha den nödvändiga upplösningen korrekt.

Steg 4: Gå igenom varje sida och markera text

Låt oss nu gå igenom varje sida i PDF:en och hitta de textfragment vi vill markera:

for (int i = 0; i < pdfDocument.Pages.Count; i++)
{
    Page page = pdfDocument.Pages[i + 1]; // Sidorna är 1-indexerade i Aspose.
    TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
    textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
    page.Accept(textFragmentAbsorber);

Vi kommer åt varje sida och letar efter all text med hjälp avTextFragmentAbsorber . Det reguljära uttrycksmönstret@"[\S]+" fångar alla tecken som inte är blanksteg.

Steg 5: Extrahera textfragment och markera

Nu är det dags att extrahera textfragmenten och markera dem. Denna process involverar att rita rektanglar runt de karaktärer vi vill lyfta fram:

TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

foreach (TextFragment textFragment in textFragmentCollection)
{
    // Belyser logiken här
    for (int segNum = 1; segNum <= textFragment.Segments.Count; segNum++)
    {
        TextSegment segment = textFragment.Segments[segNum];
        for (int charNum = 1; charNum <= segment.Characters.Count; charNum++)
        {
            CharInfo characterInfo = segment.Characters[charNum];
            gr.DrawRectangle(Pens.Black, 
                (float)characterInfo.Rectangle.LLX, 
                (float)characterInfo.Rectangle.LLY, 
                (float)characterInfo.Rectangle.Width, 
                (float)characterInfo.Rectangle.Height);
        }
    }
}

Vi går igenom varje textfragment, dess segment och individuella tecken, och ritar rektanglar runt dem med hjälp av det grafikobjekt som tidigare skapats.

Steg 6: Spara den ändrade bilden

När du har markerat måste du spara den resulterande bilden som en ny PNG-fil:

dataDir = dataDir + "HighlightCharacterInPDF_out.png";
bmp.Save(dataDir, System.Drawing.Imaging.ImageFormat.Png);

Den här raden sparar din modifierade bitmappsbild som en PNG-fil i den angivna katalogen.

Steg 7: Avsluta med undantagshantering

Slutligen är det god praxis att linda in din kod i ett försök-fångst-block, och se till att vi hanterar alla oväntade fel på ett elegant sätt:

catch (Exception ex)
{
    Console.WriteLine(ex.Message + "\nThis example will only work if you apply a valid Aspose License. You can purchase full license or get a 30-day temporary license from [here](https://purchase.aspose.com/temporary-license/).");
}

Detta block fångar upp eventuella undantag som kan inträffa under processen och ger informativ feedback till användaren.

Slutsats

Och där har du det! Du har framgångsrikt markerat tecken i en PDF-fil med Aspose.PDF för .NET. Det här kraftfulla biblioteket öppnar dörrar till oändliga möjligheter i PDF-manipulation – oavsett om du arbetar med anteckningar, formulärfyllning eller till och med dokumentkonvertering. När du fortsätter på din resa med Aspose, kom ihåg att övning är nyckeln. Fortsätt experimentera med olika funktioner så blir du snabbt ett PDF-proffs!

FAQ’s

Vad är Aspose.PDF för .NET?

Aspose.PDF för .NET är ett bibliotek som gör det möjligt att skapa, manipulera och konvertera PDF-dokument programmatiskt i .NET-applikationer.

Kan jag markera flera textfragment samtidigt?

Ja, koden som tillhandahålls kan anpassas för att markera flera fragment genom att gå igenom all text i PDF:en.

Finns det en gratisversion av Aspose.PDF?

Ja, Aspose erbjuder en gratis provperiod, så att du kan testa biblioteket innan du köper.

Behöver jag några licenser för att använda Aspose.PDF?

Ja, en giltig licens krävs för kommersiell användning, men du kan skaffa en 30-dagars tillfällig licens för testning.

Var kan jag hitta mer dokumentation?

Du kan hänvisa tillAspose.PDF-dokumentation för mer detaljerad information om implementering och funktioner.