Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Извлечение таблиц из PDF — нетривиальная задача, поскольку таблицы могут быть созданы различными способами.
У Aspose.PDF for .NET есть инструмент, который упрощает извлечение табличных данных. Чтобы извлечь данные таблицы, выполните следующие действия:
TableList
— это список AbsorbedTable. Чтобы получить данные, переберите TableList
и обработайте RowList и CellList.Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
Приведённый ниже пример показывает извлечение таблицы со всех страниц:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractTable()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Tables();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
foreach (var page in document.Pages)
{
Aspose.Pdf.TableAbsorber absorber = new Aspose.Pdf.TableAbsorber();
absorber.Visit(page);
foreach (var table in absorber.TableList)
{
Console.WriteLine("Table");
foreach (var row in table.RowList)
{
foreach (var cell in row.CellList)
{
foreach (var fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (var seg in fragment.Segments)
{
sb.Append(seg.Text);
}
Console.Write($"{sb.ToString()}|");
}
}
Console.WriteLine();
}
}
}
}
}
Каждая поглощённая таблица имеет свойство Rectangle, которое описывает положение таблицы на странице.
Если вам нужно извлечь таблицы, расположенные в определённой области, вам придётся работать с конкретными координатами.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
В приведённом ниже примере показано, как извлечь таблицу, отмеченную квадратной аннотацией:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractMarkedTable()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Tables();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
var page = document.Pages[1];
var squareAnnotation =
page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
as Aspose.Pdf.Annotations.SquareAnnotation;
var absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
foreach (var table in absorber.TableList)
{
var isInRegion = (squareAnnotation.Rect.LLX < table.Rectangle.LLX) &&
(squareAnnotation.Rect.LLY < table.Rectangle.LLY) &&
(squareAnnotation.Rect.URX > table.Rectangle.URX) &&
(squareAnnotation.Rect.URY > table.Rectangle.URY);
if (isInRegion)
{
foreach (var row in table.RowList)
{
foreach (var cell in row.CellList)
{
foreach (var fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (var seg in fragment.Segments)
{
sb.Append(seg.Text);
}
var text = sb.ToString();
Console.Write($"{text}|");
}
}
Console.WriteLine();
}
}
}
}
}
В следующем примере показано, как извлечь таблицу и сохранить её в виде CSV-файла. Чтобы узнать, как преобразовать PDF в электронную таблицу Excel, обратитесь к статье Преобразование PDF в Excel.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractTableSaveExcel()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf_Tables();
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
{
// Instantiate ExcelSave Option object
Aspose.Pdf.ExcelSaveOptions excelSave = new Aspose.Pdf.ExcelSaveOptions { Format = ExcelSaveOptions.ExcelFormat.CSV };
// Save the output in XLS format
document.Save(dataDir + "ExtractTableSaveXLS_out.xlsx", excelSave);
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.