Destacar caractere no arquivo PDF
Neste tutorial, explicaremos como destacar caracteres em um arquivo PDF usando a biblioteca Aspose.PDF para .NET. Seguiremos o processo passo a passo de destaque de caracteres em um PDF usando o código-fonte C# fornecido.
Requisitos
Antes de começar, certifique-se de ter o seguinte:
- A biblioteca Aspose.PDF para .NET instalada.
- Uma compreensão básica da programação C#.
Etapa 1: configurar o diretório de documentos
Primeiro, você precisa definir o caminho para o diretório onde o arquivo PDF de entrada está localizado. Substituir"YOUR DOCUMENT DIRECTORY"
nodataDir
variável com o caminho para o seu arquivo PDF.
string dataDir = "YOUR DOCUMENT DIRECTORY";
Passo 2: Carregue o Documento PDF
A seguir, carregamos o documento PDF de entrada usando oAspose.Pdf.Document
aula.
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(dataDir + "input.pdf");
Passo 3: Converter PDF em Imagem
Para destacar caracteres, convertemos o documento PDF em uma imagem usando oPdfConverter
aula. Definimos a resolução para a conversão e recuperamos a imagem como umBitmap
objeto.
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);
Etapa 4: destacar caracteres
Percorremos cada página do documento PDF e usamos umTextFragmentAbsorber
objeto para encontrar todas as palavras na página. Em seguida, iteramos sobre os fragmentos de texto, segmentos e caracteres para destacá-los usando retângulos.
using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp))
{
//Definir escala e transformar
float scale = resolution / 72f;
gr.Transform = new System.Drawing.Drawing2D.Matrix(scale, 0, 0, -scale, 0, bmp.Height);
// Percorrer as páginas
for (int i = 0; i < pdfDocument.Pages.Count; i++)
{
Page page = pdfDocument.Pages[1];
// Encontre todas as palavras na página
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
page. Accept(textFragmentAbsorber);
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
// Percorrer fragmentos de texto
foreach(TextFragment textFragment in textFragmentCollection)
{
if (i == 0)
{
// Destacar personagens
gr.DrawRectangle(
Think.Yellow,
(float)textFragment.Position.XIndent,
(float)textFragment.Position.YIndent,
(float)textFragment.Rectangle.Width,
(float)textFragment.Rectangle.Height);
// Loop através de segmentos
foreach(TextSegment segment in textFragment.Segments)
{
// Segmento de destaque
gr.DrawRectangle(
Think Green,
(float)segment.Rectangle.LLX,
(float)segment.Rectangle.LLY,
(float)segment.Rectangle.Width,
(float)segment.Rectangle.Height);
// Percorrer personagens
foreach(CharInfo characterInfo in segment.Characters)
{
// Destacar personagem
gr.DrawRectangle(
Think.Black,
(float)characterInfo.Rectangle.LLx,
(float)characterInfo.Rectangle.LLY,
(float)characterInfo.Rectangle.Width,
(float)characterInfo.Rectangle.Height);
}
}
}
}
}
}
Etapa 5: salve a imagem de saída
Finalmente, salvamos a imagem modificada com os caracteres destacados no arquivo de saída especificado.
dataDir = dataDir + "HighlightCharacterInPDF_out.png";
bmp.Save(dataDir, System.Drawing.Imaging.ImageFormat.Png);
Exemplo de código-fonte para destaque de caractere em PDF usando Aspose.PDF para .NET
try
{
// O caminho para o diretório de documentos.
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];
// Crie o objeto TextAbsorber para encontrar todas as palavras
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"[\S]+");
textFragmentAbsorber.TextSearchOptions.IsRegularExpressionUsed = true;
page.Accept(textFragmentAbsorber);
// Obtenha os fragmentos de texto extraídos
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
// Percorrer os fragmentos
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.");
}
Conclusão
Neste tutorial, você aprendeu como destacar caracteres em um documento PDF usando a biblioteca Aspose.PDF para .NET. Seguindo o guia passo a passo e executando o código C# fornecido, você pode destacar caracteres em um PDF e salvar a saída como uma imagem.
Perguntas frequentes
P: Qual é o objetivo do tutorial “Destacar caractere no arquivo PDF”?
R: O tutorial “Destacar caracteres em arquivo PDF” explica como usar a biblioteca Aspose.PDF para .NET para destacar caracteres em um documento PDF. O tutorial fornece um guia passo a passo e código-fonte C# para fazer isso.
P: Por que eu gostaria de destacar caracteres em um documento PDF?
R: Destacar caracteres em um documento PDF pode ser útil para diversos fins, como enfatizar um conteúdo específico ou tornar determinado texto mais visível e distinguível.
P: Como configuro o diretório de documentos?
R: Para configurar o diretório de documentos:
- Substituir
"YOUR DOCUMENT DIRECTORY"
nodataDir
variável com o caminho para o diretório onde seu arquivo PDF de entrada está localizado.
P: Como carrego o documento PDF e o converto em uma imagem?
R: No tutorial, oAspose.Pdf.Document
class é usada para carregar o documento PDF de entrada. Então oPdfConverter
classe é empregada para converter o documento PDF em uma imagem. A resolução da imagem é definida e a imagem é recuperada como umBitmap
objeto.
P: Como realço caracteres na imagem do documento PDF?
R: O tutorial orienta você no processo de percorrer cada página do documento PDF, encontrando palavras usando umTextFragmentAbsorber
e iterar fragmentos de texto, segmentos e caracteres para destacá-los usando retângulos.
P: Posso personalizar a aparência dos caracteres e segmentos destacados?
R: Sim, você pode personalizar a aparência dos caracteres e segmentos destacados modificando as cores e estilos usados nas operações de desenho.
P: Como salvo a imagem modificada com os caracteres destacados?
R: O tutorial demonstra como salvar a imagem modificada com os caracteres destacados no arquivo de saída especificado usando oSave
método doBitmap
aula.
P: É necessária uma licença Aspose válida para este tutorial?
R: Sim, uma licença Aspose válida é necessária para que este tutorial funcione corretamente. Você pode adquirir uma licença completa ou obter uma licença temporária de 30 dias no site Aspose.