أصبح PDF أحد أكثر تنسيقات المستندات استخدامًا في العديد من المجالات. في حالات مختلفة ، يتم استخدامه لإنشاء الفواتير حيث تظهر البيانات في شكل جدول. في مثل هذه الحالات ، قد تحتاج إلى تحليل ملف PDF لقراءة البيانات من الجداول برمجيًا. لتحقيق ذلك ، تتناول المقالة كيفية استخراج البيانات من جداول PDF باستخدام C#.
C# API لاستخراج الجداول من PDF
لاستخراج البيانات من الجداول في ملفات PDF ، سنستخدم Aspose.PDF for .NET. إنها واجهة برمجة تطبيقات قوية توفر مجموعة واسعة من ميزات معالجة ملفات PDF. يمكنك إما تنزيل API أو تثبيته باستخدام NuGet.
PM> Install-Package Aspose.PDF
استخراج البيانات من جداول PDF في C#
فيما يلي خطوات استخراج البيانات من الجداول في ملف PDF باستخدام C#.
- قم بتحميل مستند PDF باستخدام فئة Document.
- قم بالتكرار خلال الصفحات في ملف PDF باستخدام مجموعة Document.Pages.
- في كل تكرار ، قم بتهيئة كائن TableAbsorber وقم بزيارة الصفحة المحددة باستخدام طريقة TableAbsorber.Visit (صفحة).
- في حلقة متداخلة ، كرر خلال قائمة الجداول في مجموعة TableAbsorber.TableList.
- لكل AbsorbedTable في المجموعة ، كرر خلال مجموعة الصفوف في AbsorbedTable.RowList.
- لكل AbsorbedRow في المجموعة ، كرر خلال تجميع الخلايا في AbsorbedRow.CellList.
- أخيرًا ، قم بعمل حلقة من خلال TextFragments مجموعة من كل AbsorbedCell واطبع النص.
يوضح نموذج التعليمات البرمجية التالي كيفية استخراج نص من جدول PDF في C#.
// تحميل مستند PDF المصدر
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// حلقة من خلال الصفحات
foreach (var page in pdfDocument.Pages)
{
// قم بإنشاء طاولة امتصاص وقم بزيارة الصفحة
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// حلقة من خلال كل طاولة ممتصة
foreach (AbsorbedTable table in absorber.TableList)
{
Console.WriteLine("Table");
// حلقة خلال كل صف في الجدول
foreach (AbsorbedRow row in table.RowList)
{
// حلقة خلال كل خلية في الصف
foreach (AbsorbedCell cell in row.CellList)
{
// حلقة خلال أجزاء النص
foreach (TextFragment fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (TextSegment seg in fragment.Segments)
sb.Append(seg.Text);
Console.Write($"{sb.ToString()}|");
}
}
Console.WriteLine();
}
}
}
استخراج الجدول من منطقة معينة من الصفحة
فيما يلي خطوات استخراج جدول من جزء معين من الصفحة في ملف PDF باستخدام C#.
- قم بتحميل مستند PDF باستخدام فئة المستند.
- حدد صفحة المطلوبة من مجموعة Document.Pages.
- استخرج التعليق التوضيحي المربع للصفحة.
- قم بتهيئة كائن TableAbsorber وقم بزيارة الصفحة باستخدام طريقة TableAbsorber.Visit (Page).
- في حلقة متداخلة ، كرر خلال قائمة الجداول في مجموعة TableAbsorber.TableList.
- إذا كان الجدول في المنطقة ، فقم بإجراء الخطوات التالية.
- كرر خلال مجموعة الصفوف في AbsorbedTable.RowList.
- لكل AbsorbedRow في المجموعة ، كرر خلال تجميع الخلايا في AbsorbedRow.CellList.
- أخيرًا ، قم بعمل حلقة من خلال TextFragments مجموعة من كل AbsorbedCell واطبع النص.
يوضح نموذج التعليمات البرمجية التالي كيفية استخراج الجدول من منطقة معينة في صفحة PDF.
// تحميل مستند PDF المصدر
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// حدد الصفحة واستخرج التعليق التوضيحي المربع الخاص بها
var page = pdfDocument.Pages[1];
var squareAnnotation =
page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
as Annotations.SquareAnnotation;
// قم بإنشاء وحدة امتصاص الطعام وقم بزيارة الصفحة
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// قم بعمل حلقة خلال كل جدول ممتص في القائمة
foreach (AbsorbedTable 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 (AbsorbedRow row in table.RowList)
{
// حلقة خلال كل خلية في الصف
foreach (AbsorbedCell cell in row.CellList)
{
// قم بالتكرار خلال أجزاء النص وطباعة النص
foreach (TextFragment fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (TextSegment seg in fragment.Segments)
{
sb.Append(seg.Text);
}
var text = sb.ToString();
Console.Write($"{text}|");
}
}
Console.WriteLine();
}
}
}
احصل على رخصة مجانية
يمكنك استخدام Aspose.PDF for .NET بدون قيود تقييمية باستخدام ترخيص مؤقت.
استنتاج
في هذه المقالة ، تعلمت كيفية استخراج البيانات من الجداول في ملف PDF باستخدام C#. علاوة على ذلك ، لقد رأيت كيفية استخراج جدول من منطقة معينة من الصفحة في PDF. يمكنك استكشاف المزيد حول واجهة برمجة تطبيقات C# PDF باستخدام التوثيق. أيضًا ، يمكنك نشر استفساراتك على المنتدى.