ملفات PDF هي تنسيق قياسي لتبادل المستندات عبر الإنترنت. عادةً ما تتم مشاركة المستندات مثل الفواتير وأدلة المنتج في شكل ملفات PDF. قد تكون هناك حالات يكون لديك فيها فواتير متعددة تحتوي على بيانات مجدولة تحتاج إلى استخراجها ومعالجتها بشكل أكبر. سيكون استخراج هذه البيانات برمجيًا أكثر كفاءة. تحقيقًا لهذه الغاية ، ستعلمك هذه المقالة كيفية استخراج البيانات من جداول PDF باستخدام C ++.

واجهة برمجة تطبيقات C ++ لاستخراج البيانات من الجداول في ملفات PDF

Aspose.PDF for C ++ هي مكتبة C ++ تسمح لك بإنشاء ، قراءة ، وتحديث ملفات PDF. علاوة على ذلك ، تدعم واجهة برمجة التطبيقات (API) استخراج البيانات من الجداول في ملفات PDF. يمكنك إما تثبيت API من خلال NuGet أو تنزيلها مباشرة من قسم التنزيلات.

PM> Install-Package Aspose.PDF.Cpp

استخراج البيانات من جداول PDF باستخدام C ++

فيما يلي خطوات استخراج البيانات من جداول PDF.

يوضح نموذج التعليمات البرمجية التالي كيفية استخراج البيانات من جداول PDF باستخدام C ++.

// قم بتحميل مستند PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input3.pdf");

// كرر خلال صفحات المستند
for (auto page : pdfDocument->get_Pages())
{
	// قم بإنشاء مثيل لفئة TableAbsorber
	auto absorber = MakeObject<TableAbsorber>();
	absorber->Visit(page);

	// كرر من خلال الجداول
	for (auto table : absorber->get_TableList())
	{
		Console::WriteLine(u"Table");

		// كرر خلال الصفوف
		for (auto row : table->get_RowList())
		{
			// كرر عبر الخلايا
			for (auto cell : row->get_CellList())
			{
				// كرر خلال أجزاء النص
				for (auto fragment : cell->get_TextFragments())
				{
					String string = u"";

					// كرر خلال مقاطع النص
					for (auto seg : fragment->get_Segments())
					{
						// احصل على النص
						string = String::Concat(string, seg->get_Text());
					}

					// اطبع النص
					Console::WriteLine(string);
				}
			}
			Console::WriteLine();
		}
	}
}

استخراج البيانات من جدول في منطقة معينة من صفحة PDF

لاستخراج البيانات من جدول في منطقة معينة من صفحة PDF ، يرجى اتباع الخطوات الواردة أدناه.

يوضح نموذج التعليمات البرمجية التالي كيفية استخراج البيانات من جدول في منطقة معينة من صفحة PDF باستخدام C ++.

// قم بتحميل مستند PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Table_input4.pdf");

// احصل على الصفحة الأولى من المستند
auto page = pdfDocument->get_Pages()->idx_get(1);

// كرر خلال التعليقات التوضيحية على الصفحة
for (auto annotation : page->get_Annotations())
{
	// تحقق من نوع التعليق التوضيحي
	if (annotation->get_AnnotationType() == Annotations::AnnotationType::Square)
	{
		System::SharedPtr<SquareAnnotation> squareAnnotation = DynamicCast<SquareAnnotation>(annotation);

		// قم بإنشاء مثيل لفئة TableAbsorber
		auto absorber = MakeObject<TableAbsorber>();
		absorber->Visit(page);

		// كرر من خلال الجداول
		for (auto table : absorber->get_TableList())
		{
			// تحقق مما إذا كان الجدول في المنطقة
			if ((squareAnnotation->get_Rect()->get_LLX() < table->get_Rectangle()->get_LLX()) &&
				(squareAnnotation->get_Rect()->get_LLY() < table->get_Rectangle()->get_LLY()) &&
				(squareAnnotation->get_Rect()->get_URX() > table->get_Rectangle()->get_URX()) &&
				(squareAnnotation->get_Rect()->get_URY() > table->get_Rectangle()->get_URY())
				)
			{
				// كرر خلال الصفوف
				for (auto row : table->get_RowList())
				{
					// كرر عبر الخلايا
					for (auto cell : row->get_CellList())
					{
						// كرر خلال أجزاء النص
						for (auto fragment : cell->get_TextFragments())
						{
							String string = u"";

							// كرر خلال مقاطع النص
							for (auto seg : fragment->get_Segments())
							{
								// احصل على النص
								string = String::Concat(string, seg->get_Text());
							}

							// اطبع النص
							Console::WriteLine(string);
						}
					}
					Console::WriteLine();
				}
			}
		}
		break;
	}
}

احصل على رخصة مجانية

لتجربة API بدون قيود تقييمية ، يمكنك طلب ترخيص مجاني مؤقت.

استنتاج

في هذه المقالة ، تعلمت كيفية استخراج البيانات من جداول PDF باستخدام C ++. علاوة على ذلك ، لقد تعلمت كيفية استخراج البيانات من جدول في منطقة معينة من صفحة PDF. يوفر Aspose.PDF for C ++ API العديد من الميزات الإضافية للعمل مع ملفات PDF. يمكنك استكشاف API بالتفصيل من خلال زيارة الوثائق الرسمية. في حالة وجود أي أسئلة ، لا تتردد في الاتصال بنا على منتدى الدعم المجاني.

أنظر أيضا