Evidenzia il carattere nel file PDF

In questo tutorial spiegheremo come evidenziare i caratteri in un file PDF utilizzando la libreria Aspose.PDF per .NET. Seguiremo il processo passo passo per evidenziare i caratteri in un PDF utilizzando il codice sorgente C# fornito.

Requisiti

Prima di iniziare, assicurati di avere quanto segue:

  • La libreria Aspose.PDF per .NET installata.
  • Una conoscenza di base della programmazione C#.

Passaggio 1: impostare la directory dei documenti

Innanzitutto, devi impostare il percorso della directory in cui si trova il file PDF di input. Sostituire"YOUR DOCUMENT DIRECTORY" neldataDir variabile con il percorso del file PDF.

string dataDir = "YOUR DOCUMENT DIRECTORY";

Passaggio 2: carica il documento PDF

Successivamente, carichiamo il documento PDF di input utilizzando il fileAspose.Pdf.Document classe.

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

Passaggio 3: converti PDF in immagine

Per evidenziare i caratteri, convertiamo il documento PDF in un’immagine utilizzando il filePdfConverter classe. Impostiamo la risoluzione per la conversione e recuperiamo l’immagine come aBitmap oggetto.

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

Passaggio 4: evidenzia i caratteri

Esaminiamo ciascuna pagina del documento PDF e utilizziamo aTextFragmentAbsorber oggetto per trovare tutte le parole nella pagina. Quindi iteriamo sui frammenti di testo, sui segmenti e sui caratteri per evidenziarli utilizzando rettangoli.

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

     // Passa attraverso le pagine
     for (int i = 0; i < pdfDocument.Pages.Count; i++)
     {
         Page page = pdfDocument.Pages[1];

         // Trova tutte le parole nella pagina
         TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
         textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
         page. Accept(textFragmentAbsorber);
         TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

         // Passa in rassegna i frammenti di testo
         foreach(TextFragment textFragment in textFragmentCollection)
         {
             if (i == 0)
             {
                 // Evidenzia i caratteri
                 gr.DrawRectangle(
                     Think.Yellow,
                     (float)textFragment.Position.XIndent,
                     (float)textFragment.Position.YIndent,
                     (float)textFragment.Rectangle.Width,
                     (float)textFragment.Rectangle.Height);

                 // Passa attraverso i segmenti
                 foreach(TextSegment segment in textFragment.Segments)
                 {
                     // Evidenzia il segmento
                     gr.DrawRectangle(
                         Think Green,
                         (float)segment.Rectangle.LLX,
                         (float)segment.Rectangle.LLY,
                         (float)segment.Rectangle.Width,
                         (float)segment.Rectangle.Height);

                     // Passa attraverso i personaggi
                     foreach(CharInfo characterInfo in segment.Characters)
                     {
                         // Evidenzia il carattere
                         gr.DrawRectangle(
                             Think.Black,
                             (float)characterInfo.Rectangle.LLx,
                             (float)characterInfo.Rectangle.LLY,
                             (float)characterInfo.Rectangle.Width,
                             (float)characterInfo.Rectangle.Height);
                     }
                 }
             }
         }
     }
}

Passaggio 5: salva l’immagine di output

Infine, salviamo l’immagine modificata con i caratteri evidenziati nel file di output specificato.

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

Codice sorgente di esempio per Evidenzia carattere in PDF utilizzando Aspose.PDF per .NET

try
{
	// Il percorso della directory dei documenti.
	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];
				// Crea un oggetto TextAbsorber per trovare tutte le parole
				TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
				textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
				page.Accept(textFragmentAbsorber);
				// Ottieni i frammenti di testo estratti
				TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
				// Passa in rassegna i frammenti
				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.");
}

Conclusione

In questo tutorial hai imparato come evidenziare i caratteri in un documento PDF utilizzando la libreria Aspose.PDF per .NET. Seguendo la guida passo passo ed eseguendo il codice C# fornito, puoi evidenziare i caratteri in un PDF e salvare l’output come immagine.

Domande frequenti

D: Qual è lo scopo del tutorial “Evidenzia carattere nel file PDF”?

R: Il tutorial “Evidenzia carattere nel file PDF” spiega come utilizzare la libreria Aspose.PDF per .NET per evidenziare i caratteri all’interno di un documento PDF. L’esercitazione fornisce una guida passo passo e il codice sorgente C# per raggiungere questo obiettivo.

D: Perché dovrei evidenziare i caratteri in un documento PDF?

R: Evidenziare i caratteri in un documento PDF può essere utile per vari scopi, ad esempio enfatizzare contenuti specifici o rendere determinati testi più visibili e distinguibili.

D: Come posso impostare la directory dei documenti?

R: Per impostare la directory dei documenti:

  1. Sostituire"YOUR DOCUMENT DIRECTORY" neldataDir variabile con il percorso della directory in cui si trova il file PDF di input.

D: Come carico il documento PDF e lo converto in un’immagine?

R: Nel tutorial, ilAspose.Pdf.Document viene utilizzata per caricare il documento PDF di input. Poi ilPdfConverter viene utilizzata per convertire il documento PDF in un’immagine. La risoluzione dell’immagine viene impostata e l’immagine viene recuperata come fileBitmap oggetto.

D: Come faccio a evidenziare i caratteri nell’immagine del documento PDF?

R: Il tutorial ti guida attraverso il processo di scorrimento di ciascuna pagina del documento PDF, trovando le parole utilizzando aTextFragmentAbsorbere scorrere frammenti di testo, segmenti e caratteri per evidenziarli utilizzando rettangoli.

D: Posso personalizzare l’aspetto dei caratteri e dei segmenti evidenziati?

R: Sì, puoi personalizzare l’aspetto dei caratteri e dei segmenti evidenziati modificando i colori e gli stili utilizzati nelle operazioni di disegno.

D: Come salvo l’immagine modificata con i caratteri evidenziati?

R: Il tutorial mostra come salvare l’immagine modificata con i caratteri evidenziati nel file di output specificato utilizzando il fileSave metodo delBitmap classe.

D: Per questo tutorial è necessaria una licenza Aspose valida?

R: Sì, è necessaria una licenza Aspose valida affinché questo tutorial funzioni correttamente. È possibile acquistare una licenza completa o ottenere una licenza temporanea di 30 giorni dal sito Web Aspose.