Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Podemos obtener texto de un documento PDF buscando un texto particular (usando “texto plano” o “expresiones regulares”) de una sola página o de todo el documento, o podemos obtener el texto completo de una sola página, rango de páginas o documento completo. Sin embargo, en algunos casos, se requiere extraer párrafos de un documento PDF o texto en forma de párrafos. Hemos implementado funcionalidad para buscar secciones y párrafos en el texto de las páginas del documento PDF. Hemos introducido la clase ParagraphAbsorber (como TextFragmentAbsorber y TextAbsorber), que se puede utilizar para extraer párrafos de documentos PDF. Hay dos formas en las que puede usar ParagraphAbsorber:
Dibujando el borde de secciones y párrafos de texto en la página PDF:
El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractParagraphWithDrawingTheBorder()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentForExtract.pdf"))
{
var page = document.Pages[2];
var absorber = new Aspose.Pdf.Text.ParagraphAbsorber();
absorber.Visit(page);
Aspose.Pdf.Text.PageMarkup markup = absorber.PageMarkups[0];
foreach (Aspose.Pdf.Text.MarkupSection section in markup.Sections)
{
DrawRectangleOnPage(section.Rectangle, page);
foreach (Aspose.Pdf.Text.MarkupParagraph paragraph in section.Paragraphs)
{
DrawPolygonOnPage(paragraph.Points, page);
}
}
// Save PDF document
document.Save(dataDir + "DocumentWithBorder_out.pdf");
}
}
private static void DrawRectangleOnPage(Aspose.Pdf.Rectangle rectangle, Aspose.Pdf.Page page)
{
page.Contents.Add(new Aspose.Pdf.Operators.GSave());
page.Contents.Add(new Aspose.Pdf.Operators.ConcatenateMatrix(1, 0, 0, 1, 0, 0));
page.Contents.Add(new Aspose.Pdf.Operators.SetRGBColorStroke(0, 1, 0));
page.Contents.Add(new Aspose.Pdf.Operators.SetLineWidth(2));
page.Contents.Add(
new Aspose.Pdf.Operators.Re(rectangle.LLX,
rectangle.LLY,
rectangle.Width,
rectangle.Height));
page.Contents.Add(new Aspose.Pdf.Operators.ClosePathStroke());
page.Contents.Add(new Aspose.Pdf.Operators.GRestore());
}
private static void DrawPolygonOnPage(Aspose.Pdf.Point[] polygon, Aspose.Pdf.Page page)
{
page.Contents.Add(new Aspose.Pdf.Operators.GSave());
page.Contents.Add(new Aspose.Pdf.Operators.ConcatenateMatrix(1, 0, 0, 1, 0, 0));
page.Contents.Add(new Aspose.Pdf.Operators.SetRGBColorStroke(0, 0, 1));
page.Contents.Add(new Aspose.Pdf.Operators.SetLineWidth(1));
page.Contents.Add(new Aspose.Pdf.Operators.MoveTo(polygon[0].X, polygon[0].Y));
for (int i = 1; i < polygon.Length; i++)
{
page.Contents.Add(new Aspose.Pdf.Operators.LineTo(polygon[i].X, polygon[i].Y));
}
page.Contents.Add(new Aspose.Pdf.Operators.LineTo(polygon[0].X, polygon[0].Y));
page.Contents.Add(new Aspose.Pdf.Operators.ClosePathStroke());
page.Contents.Add(new Aspose.Pdf.Operators.GRestore());
}
Iterando a través de la colección de párrafos y obteniendo el texto de ellos:
El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractParagraphByIteratingThroughParagraphsCollection()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Text();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "DocumentForExtract.pdf"))
{
// Instantiate ParagraphAbsorber
var absorber = new Aspose.Pdf.Text.ParagraphAbsorber();
absorber.Visit(document);
foreach (Aspose.Pdf.Text.PageMarkup markup in absorber.PageMarkups)
{
int i = 1;
foreach (Aspose.Pdf.Text.MarkupSection section in markup.Sections)
{
int j = 1;
foreach (Aspose.Pdf.Text.MarkupParagraph paragraph in section.Paragraphs)
{
StringBuilder paragraphText = new StringBuilder();
foreach (List<Aspose.Pdf.Text.TextFragment> line in paragraph.Lines)
{
foreach (Aspose.Pdf.Text.TextFragment fragment in line)
{
paragraphText.Append(fragment.Text);
}
paragraphText.Append("\r\n");
}
paragraphText.Append("\r\n");
Console.WriteLine("Paragraph {0} of section {1} on page {2}:", j, i, markup.Number);
Console.WriteLine(paragraphText.ToString());
j++;
}
i++;
}
}
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.