Markeer karakter in PDF-bestand

Invoering

Als het gaat om het werken met PDF’s, is het vaak nodig om tekst of tekens te markeren, of het nu voor academische doeleinden is, voor bewerking of gewoon om de leesbaarheid te verbeteren. Stel je voor dat je een prachtig document hebt, maar je wilt bepaalde delen benadrukken. Dan komt markeren om de hoek kijken! In deze tutorial duiken we in het markeren van tekens in een PDF-bestand met behulp van de krachtige Aspose.PDF voor .NET-bibliotheek.

Vereisten

Voordat we in de code duiken, moeten we ervoor zorgen dat we alles hebben wat we nodig hebben. Dit is wat je nodig hebt:

  1. Een ontwikkelomgeving: in deze zelfstudie gaan we ervan uit dat u in Visual Studio of een vergelijkbare .NET IDE werkt.
  2. Aspose.PDF voor .NET-bibliotheek: Als u dat nog niet hebt gedaan, kunt u dat doendownload het hier en voeg het toe aan uw project.
  3. Basiskennis van C#: Met deze inleiding in C#-programmering begrijpt u de implementatie ervan eenvoudig.
  4. Een PDF-document: U moet een voorbeeld-PDF-bestand gereed hebben om mee te werken. U kunt er een maken of een bestaand document gebruiken.

Pakketten importeren

Om te beginnen moeten we de benodigde namespaces importeren. Om dit te doen, moet u ze bovenaan uw C#-bestand opnemen:

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

Deze pakketten zijn essentieel voor het maken, bewerken en verwerken van PDF-documenten met behulp van de Aspose-bibliotheek.

Laten we het proces nu opsplitsen in overzichtelijke stappen om tekens in uw PDF te markeren.

Stap 1: Initialiseer het PDF-document

De eerste stap is het initialiseren van uw PDF-document. Dit houdt in dat u het PDF-bestand laadt waarmee u gaat werken. Dit is hoe u dat doet:

string dataDir = "YOUR DOCUMENT DIRECTORY"; // Zorg ervoor dat u het juiste pad instelt.
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(dataDir + "input.pdf");

Vervang in dit fragmentYOUR DOCUMENT DIRECTORY met het werkelijke pad op uw machine waar uw invoer-PDF-bestand zich bevindt.Aspose.Pdf.Document klasse wordt geïnstantieerd om uw PDF te laden.

Stap 2: Stel het renderingproces in

Vervolgens moeten we het renderingproces voor ons document voorbereiden. Dit is essentieel om de tekens op de pagina nauwkeurig te markeren.

int resolution = 150; // Stel de resolutie voor het vastleggen van afbeeldingen in.
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);

We definiëren een resolutie voor duidelijkheid, zodat de tekst correct kan worden weergegeven.PdfConverterzet de PDF-pagina’s om in afbeeldingen, zodat we erop kunnen tekenen.

Stap 3: Maak een grafisch object voor tekenen

Nadat we het tekenproces hebben ingesteld, moeten we een grafisch object maken waarin we de markering gaan uitvoeren:

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

Hier maken we het grafische object van de bitmapafbeelding. De transformatie helpt de rendering aan te passen om de benodigde resolutie correct te matchen.

Stap 4: Loop door elke pagina en markeer tekst

Laten we nu door elke pagina in de PDF bladeren en de tekstfragmenten zoeken die we willen markeren:

for (int i = 0; i < pdfDocument.Pages.Count; i++)
{
    Page page = pdfDocument.Pages[i + 1]; // Pagina's worden in Aspose 1-geïndexeerd.
    TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
    textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
    page.Accept(textFragmentAbsorber);

We openen elke pagina en zoeken naar alle tekst met behulp van deTextFragmentAbsorber Het reguliere expressiepatroon@"[\S]+" vangt alle niet-spatietekens op.

Stap 5: Tekstfragmenten extraheren en markeren

Nu is het tijd om de tekstfragmenten te extraheren en te markeren. Dit proces omvat het tekenen van rechthoeken rond de tekens die we willen markeren:

TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

foreach (TextFragment textFragment in textFragmentCollection)
{
    // Hier wordt de logica benadrukt
    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);
        }
    }
}

We doorlopen elk tekstfragment, de segmenten en de individuele tekens en tekenen er rechthoeken omheen met behulp van het grafische object dat we eerder hebben gemaakt.

Stap 6: Sla de gewijzigde afbeelding op

Nadat u de afbeelding hebt gemarkeerd, moet u deze opslaan als een nieuw PNG-bestand:

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

Met deze regel wordt uw gewijzigde bitmapafbeelding opgeslagen als een PNG-bestand in de aangewezen map.

Stap 7: Afronden met uitzonderingsafhandeling

Ten slotte is het een goede gewoonte om uw code in een try-catch-blok te verpakken, zodat we onverwachte fouten netjes kunnen afhandelen:

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://aankoop.aspose.com/temporary-license/).");
}

Dit blok vangt eventuele uitzonderingen op die tijdens het proces kunnen optreden en geeft informatieve feedback aan de gebruiker.

Conclusie

En daar heb je het! Je hebt met succes tekens gemarkeerd in een PDF-bestand met Aspose.PDF voor .NET. Deze krachtige bibliotheek opent deuren naar eindeloze mogelijkheden in PDF-manipulatie, of je nu werkt met annotaties, formulieren invult of zelfs documentconversie. Vergeet niet dat oefening de sleutel is terwijl je verdergaat met Aspose. Blijf experimenteren met verschillende functies en je zult snel een PDF-professional worden!

Veelgestelde vragen

Wat is Aspose.PDF voor .NET?

Aspose.PDF voor .NET is een bibliotheek waarmee u programmatisch PDF-documenten kunt maken, bewerken en converteren in .NET-toepassingen.

Kan ik meerdere tekstfragmenten tegelijk markeren?

Ja, de meegeleverde code kan worden aangepast om meerdere fragmenten te markeren door alle tekst in de PDF te doorlopen.

Bestaat er een gratis versie van Aspose.PDF?

Ja, Aspose biedt een gratis proefperiode aan, zodat u de bibliotheek kunt testen voordat u tot aankoop overgaat.

Heb ik licenties nodig om Aspose.PDF te gebruiken?

Ja, voor commercieel gebruik is een geldige licentie vereist, maar u kunt een tijdelijke licentie van 30 dagen aanschaffen om te testen.

Waar kan ik meer documentatie vinden?

U kunt verwijzen naar deAspose.PDF-documentatie voor meer gedetailleerde informatie over implementatie en functies.