Zaznacz znak w pliku PDF

W tym samouczku wyjaśnimy, jak wyróżniać znaki w pliku PDF za pomocą biblioteki Aspose.PDF dla .NET. Przejdziemy krok po kroku przez proces wyróżniania znaków w pliku PDF przy użyciu dostarczonego kodu źródłowego C#.

Wymagania

Zanim zaczniesz, upewnij się, że masz następujące elementy:

  • Zainstalowana biblioteka Aspose.PDF dla .NET.
  • Podstawowa znajomość programowania w języku C#.

Krok 1: Skonfiguruj katalog dokumentów

Najpierw musisz ustawić ścieżkę do katalogu, w którym znajduje się wejściowy plik PDF. Zastępować"YOUR DOCUMENT DIRECTORY" wdataDir zmienną ze ścieżką do pliku PDF.

string dataDir = "YOUR DOCUMENT DIRECTORY";

Krok 2: Załaduj dokument PDF

Następnie ładujemy wejściowy dokument PDF za pomocąAspose.Pdf.Document klasa.

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

Krok 3: Konwertuj plik PDF na obraz

Aby wyróżnić znaki, konwertujemy dokument PDF na obraz za pomocąPdfConverter klasa. Ustawiamy rozdzielczość konwersji i pobieramy obraz jako plikBitmap obiekt.

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);

Krok 4: Zaznacz postacie

Przeglądamy każdą stronę dokumentu PDF i używamy aTextFragmentAbsorber obiekt, aby znaleźć wszystkie słowa na stronie. Następnie iterujemy po fragmentach, segmentach i znakach tekstu, aby wyróżnić je za pomocą prostokątów.

using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp))
{
     //Ustaw skalę i przekształć
     float scale = resolution / 72f;
     gr.Transform = new System.Drawing.Drawing2D.Matrix(scale, 0, 0, -scale, 0, bmp.Height);

     // Przeglądaj strony w pętli
     for (int i = 0; i < pdfDocument.Pages.Count; i++)
     {
         Page page = pdfDocument.Pages[1];

         // Znajdź wszystkie słowa na stronie
         TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
         textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
         page. Accept(textFragmentAbsorber);
         TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

         // Przejrzyj fragmenty tekstu w pętli
         foreach(TextFragment textFragment in textFragmentCollection)
         {
             if (i == 0)
             {
                 // Zaznacz znaki
                 gr.DrawRectangle(
                     Think.Yellow,
                     (float)textFragment.Position.XIndent,
                     (float)textFragment.Position.YIndent,
                     (float)textFragment.Rectangle.Width,
                     (float)textFragment.Rectangle.Height);

                 // Zapętlaj segmenty
                 foreach(TextSegment segment in textFragment.Segments)
                 {
                     // Podświetl segment
                     gr.DrawRectangle(
                         Think Green,
                         (float)segment.Rectangle.LLX,
                         (float)segment.Rectangle.LLY,
                         (float)segment.Rectangle.Width,
                         (float)segment.Rectangle.Height);

                     // Zapętlaj znaki
                     foreach(CharInfo characterInfo in segment.Characters)
                     {
                         // Podświetl postać
                         gr.DrawRectangle(
                             Think.Black,
                             (float)characterInfo.Rectangle.LLx,
                             (float)characterInfo.Rectangle.LLY,
                             (float)characterInfo.Rectangle.Width,
                             (float)characterInfo.Rectangle.Height);
                     }
                 }
             }
         }
     }
}

Krok 5: Zapisz obraz wyjściowy

Na koniec zapisujemy zmodyfikowany obraz z podświetlonymi znakami do określonego pliku wyjściowego.

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

Przykładowy kod źródłowy dla podświetlenia znaku w formacie PDF przy użyciu Aspose.PDF dla .NET

try
{
	// Ścieżka do katalogu dokumentów.
	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];
				// Utwórz obiekt TextAbsorber, aby znaleźć wszystkie słowa
				TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
				textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
				page.Accept(textFragmentAbsorber);
				// Pobierz wyodrębnione fragmenty tekstu
				TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
				// Przejrzyj fragmenty
				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.”);
}

Wniosek

W tym samouczku nauczyłeś się wyróżniać znaki w dokumencie PDF przy użyciu biblioteki Aspose.PDF dla .NET. Postępując zgodnie ze szczegółowym przewodnikiem i wykonując dostarczony kod C#, możesz wyróżniać znaki w pliku PDF i zapisywać dane wyjściowe jako obraz.

Często zadawane pytania

P: Jaki jest cel samouczka „Podświetlanie znaków w pliku PDF”?

Odp.: Samouczek „Podświetlanie znaków w pliku PDF” wyjaśnia, jak używać biblioteki Aspose.PDF dla .NET do wyróżniania znaków w dokumencie PDF. Samouczek zawiera przewodnik krok po kroku i kod źródłowy języka C#, aby to osiągnąć.

P: Dlaczego miałbym wyróżniać znaki w dokumencie PDF?

Odp.: Wyróżnianie znaków w dokumencie PDF może być przydatne do różnych celów, na przykład do podkreślania określonej treści lub zwiększania widoczności i rozpoznawalności określonego tekstu.

P: Jak skonfigurować katalog dokumentów?

O: Aby skonfigurować katalog dokumentów:

  1. Zastępować"YOUR DOCUMENT DIRECTORY" wdataDir zmienną ze ścieżką do katalogu, w którym znajduje się wejściowy plik PDF.

P: Jak załadować dokument PDF i przekonwertować go na obraz?

Odp.: W samouczku plikAspose.Pdf.Document class służy do ładowania wejściowego dokumentu PDF. A późniejPdfConverter klasa służy do konwersji dokumentu PDF na obraz. Rozdzielczość obrazu jest ustawiana, a obraz jest pobierany jako plikBitmap obiekt.

P: Jak wyróżnić znaki na obrazie dokumentu PDF?

O: Samouczek poprowadzi Cię przez proces przeglądania poszczególnych stron dokumentu PDF w poszukiwaniu słów za pomocą aTextFragmentAbsorberoraz iterowanie po fragmentach, segmentach i znakach tekstu w celu wyróżnienia ich za pomocą prostokątów.

P: Czy mogę dostosować wygląd podświetlonych znaków i segmentów?

O: Tak, możesz dostosować wygląd podświetlonych znaków i segmentów, modyfikując kolory i style używane w operacjach rysowania.

P: Jak zapisać zmodyfikowany obraz z wyróżnionymi znakami?

Odp.: W samouczku pokazano, jak zapisać zmodyfikowany obraz z podświetlonymi znakami do określonego pliku wyjściowego za pomocąSave metodaBitmap klasa.

P: Czy do tego samouczka wymagana jest ważna licencja Aspose?

Odp.: Tak, aby ten samouczek działał poprawnie, wymagana jest ważna licencja Aspose. Możesz kupić pełną licencję lub uzyskać 30-dniową licencję tymczasową ze strony internetowej Aspose.