Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
특정 텍스트(“일반 텍스트” 또는 “정규 표현식” 사용)를 검색하여 PDF 문서에서 텍스트를 가져올 수 있으며, 단일 페이지 또는 전체 문서에서 텍스트를 가져오거나 단일 페이지, 페이지 범위 또는 전체 문서의 전체 텍스트를 가져올 수 있습니다. 그러나 경우에 따라 PDF 문서에서 단락을 추출하거나 단락 형식으로 텍스트를 가져와야 할 필요가 있습니다. PDF 문서 페이지의 텍스트에서 섹션과 단락을 검색하는 기능을 구현했습니다. PDF 문서에서 단락을 추출하는 데 사용할 수 있는 ParagraphAbsorber 클래스를 도입했습니다(예: TextFragmentAbsorber 및 TextAbsorber). ParagraphAbsorber를 사용할 수 있는 두 가지 방법은 다음과 같습니다:
PDF 페이지의 텍스트 섹션과 단락의 테두리를 그리기:
다음 코드 스니펫은 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());
}
단락 컬렉션을 반복하여 텍스트 가져오기:
다음 코드 스니펫은 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.