استخراج جداول PDF

أصبح 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 في 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.

// تحميل مستند 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 باستخدام التوثيق. أيضًا ، يمكنك نشر استفساراتك على المنتدى.

أنظر أيضا