Markeer karakter in PDF-bestand

In deze zelfstudie leggen we uit hoe u tekens in een PDF-bestand kunt markeren met behulp van de Aspose.PDF-bibliotheek voor .NET. We zullen stapsgewijs het proces doorlopen van het markeren van tekens in een PDF met behulp van de meegeleverde C#-broncode.

Vereisten

Zorg ervoor dat u over het volgende beschikt voordat u begint:

  • De Aspose.PDF voor .NET-bibliotheek geïnstalleerd.
  • Basiskennis van programmeren in C#.

Stap 1: Stel de documentmap in

Eerst moet u het pad instellen naar de map waar uw invoer-PDF-bestand zich bevindt. Vervangen"YOUR DOCUMENT DIRECTORY" in dedataDir variabele met het pad naar uw PDF-bestand.

string dataDir = "YOUR DOCUMENT DIRECTORY";

Stap 2: Laad het PDF-document

Vervolgens laden we het invoer-PDF-document met behulp van deAspose.Pdf.Document klas.

Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(dataDir + "input.pdf");

Stap 3: Converteer PDF naar afbeelding

Om tekens te markeren, converteren we het PDF-document naar een afbeelding met behulp van dePdfConverter klas. We stellen de resolutie voor de conversie in en halen de afbeelding op als eenBitmap voorwerp.

int resolution = 150;
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);

Stap 4: Markeer tekens

We doorlopen elke pagina van het PDF-document en gebruiken eenTextFragmentAbsorber object om alle woorden op de pagina te vinden. Vervolgens herhalen we de tekstfragmenten, segmenten en tekens om ze te markeren met behulp van rechthoeken.

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

     // Blader door pagina's
     for (int i = 0; i < pdfDocument.Pages.Count; i++)
     {
         Page page = pdfDocument.Pages[1];

         // Zoek alle woorden op de pagina
         TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
         textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
         page. Accept(textFragmentAbsorber);
         TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

         // Loop door tekstfragmenten
         foreach(TextFragment textFragment in textFragmentCollection)
         {
             if (i == 0)
             {
                 // Markeer karakters
                 gr.DrawRectangle(
                     Think.Yellow,
                     (float)textFragment.Position.XIndent,
                     (float)textFragment.Position.YIndent,
                     (float)textFragment.Rectangle.Width,
                     (float)textFragment.Rectangle.Height);

                 // Loop door segmenten
                 foreach(TextSegment segment in textFragment.Segments)
                 {
                     // Markeer segment
                     gr.DrawRectangle(
                         Think Green,
                         (float)segment.Rectangle.LLX,
                         (float)segment.Rectangle.LLY,
                         (float)segment.Rectangle.Width,
                         (float)segment.Rectangle.Height);

                     // Loop door karakters
                     foreach(CharInfo characterInfo in segment.Characters)
                     {
                         // Markeer karakter
                         gr.DrawRectangle(
                             Think.Black,
                             (float)characterInfo.Rectangle.LLx,
                             (float)characterInfo.Rectangle.LLY,
                             (float)characterInfo.Rectangle.Width,
                             (float)characterInfo.Rectangle.Height);
                     }
                 }
             }
         }
     }
}

Stap 5: Sla de uitvoerafbeelding op

Ten slotte slaan we de gewijzigde afbeelding met de gemarkeerde tekens op in het opgegeven uitvoerbestand.

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

Voorbeeldbroncode voor markeerteken in PDF met Aspose.PDF voor .NET

try
{
	// Het pad naar de documentenmap.
	string dataDir = "YOUR DOCUMENT DIRECTORY";
	int resolution = 150;
	Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(dataDir + "input.pdf");
	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);
		using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp))
		{
			float scale = resolution / 72f;
			gr.Transform = new System.Drawing.Drawing2D.Matrix(scale, 0, 0, -scale, 0, bmp.Height);
			for (int i = 0; i < pdfDocument.Pages.Count; i++)
			{
				Page page = pdfDocument.Pages[1];
				// Maak een TextAbsorber-object om alle woorden te vinden
				TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
				textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
				page.Accept(textFragmentAbsorber);
				// Haal de geëxtraheerde tekstfragmenten op
				TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
				// Loop door de fragmenten
				foreach (TextFragment textFragment in textFragmentCollection)
				{
					if (i == 0)
					{
						gr.DrawRectangle(
						Pens.Yellow,
						(float)textFragment.Position.XIndent,
						(float)textFragment.Position.YIndent,
						(float)textFragment.Rectangle.Width,
						(float)textFragment.Rectangle.Height);
						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];
								Aspose.Pdf.Rectangle rect = page.GetPageRect(true);
								Console.WriteLine("TextFragment = " + textFragment.Text + "    Page URY = " + rect.URY +
												  "   TextFragment URY = " + textFragment.Rectangle.URY);
								gr.DrawRectangle(
								Pens.Black,
								(float)characterInfo.Rectangle.LLX,
								(float)characterInfo.Rectangle.LLY,
								(float)characterInfo.Rectangle.Width,
								(float)characterInfo.Rectangle.Height);
							}
							gr.DrawRectangle(
							Pens.Green,
							(float)segment.Rectangle.LLX,
							(float)segment.Rectangle.LLY,
							(float)segment.Rectangle.Width,
							(float)segment.Rectangle.Height);
						}
					}
				}
			}
		}
		dataDir = dataDir + "HighlightCharacterInPDF_out.png";
		bmp.Save(dataDir, System.Drawing.Imaging.ImageFormat.Png);
	}
	Console.WriteLine("\nCharacters highlighted successfully in pdf document.\nFile saved at " + dataDir);
}
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 30 day temporary license from http:// Www.aspose.com/purchase/default.aspx.");
}

Conclusie

In deze zelfstudie hebt u geleerd hoe u tekens in een PDF-document kunt markeren met behulp van de Aspose.PDF-bibliotheek voor .NET. Door de stapsgewijze handleiding te volgen en de meegeleverde C#-code uit te voeren, kunt u tekens in een PDF markeren en de uitvoer als afbeelding opslaan.

Veelgestelde vragen

Vraag: Wat is het doel van de tutorial “Tekens markeren in PDF-bestand”?

A: In de tutorial “Tekens markeren in PDF-bestand” wordt uitgelegd hoe u de Aspose.PDF-bibliotheek voor .NET kunt gebruiken om tekens in een PDF-document te markeren. De tutorial biedt een stapsgewijze handleiding en C#-broncode om dit te bereiken.

Vraag: Waarom zou ik tekens in een PDF-document willen markeren?

A: Het markeren van tekens in een PDF-document kan voor verschillende doeleinden nuttig zijn, zoals het benadrukken van specifieke inhoud of het zichtbaarder en herkenbaarder maken van bepaalde tekst.

Vraag: Hoe stel ik de documentmap in?

A: Om de documentmap in te stellen:

  1. Vervangen"YOUR DOCUMENT DIRECTORY" in dedataDir variabele met het pad naar de map waar uw invoer-PDF-bestand zich bevindt.

Vraag: Hoe laad ik het PDF-document en converteer ik het naar een afbeelding?

A: In de tutorial wordt deAspose.Pdf.Document klasse wordt gebruikt om het invoer-PDF-document te laden. Dan dePdfConverter klasse wordt gebruikt om het PDF-document naar een afbeelding te converteren. De resolutie van de afbeelding wordt ingesteld en de afbeelding wordt opgehaald alsBitmap voorwerp.

Vraag: Hoe markeer ik tekens in de afbeelding van het PDF-document?

A: De tutorial begeleidt u bij het doorlopen van elke pagina van het PDF-document en het vinden van woorden met behulp van aTextFragmentAbsorberen door tekstfragmenten, segmenten en tekens lopen om ze met rechthoeken te markeren.

Vraag: Kan ik het uiterlijk van de gemarkeerde tekens en segmenten aanpassen?

A: Ja, u kunt het uiterlijk van de gemarkeerde tekens en segmenten aanpassen door de kleuren en stijlen te wijzigen die bij de tekenbewerkingen worden gebruikt.

Vraag: Hoe sla ik de gewijzigde afbeelding op met de gemarkeerde tekens?

A: De tutorial laat zien hoe u de gewijzigde afbeelding met de gemarkeerde tekens kunt opslaan in het opgegeven uitvoerbestand met behulp van deSave werkwijze van deBitmap klas.

Vraag: Is een geldige Aspose-licentie vereist voor deze zelfstudie?

A: Ja, een geldige Aspose-licentie is vereist om deze tutorial correct te laten werken. U kunt een volledige licentie kopen of een tijdelijke licentie van 30 dagen verkrijgen via de Aspose-website.