ملفات PDF هي تنسيق قياسي لتبادل المستندات عبر الإنترنت. عادةً ما تتم مشاركة المستندات مثل الفواتير وأدلة المنتج في شكل ملفات PDF. قد تكون هناك حالات يكون لديك فيها فواتير متعددة تحتوي على بيانات مجدولة تحتاج إلى استخراجها ومعالجتها بشكل أكبر. سيكون استخراج هذه البيانات برمجيًا أكثر كفاءة. تحقيقًا لهذه الغاية ، ستعلمك هذه المقالة كيفية استخراج البيانات من جداول PDF باستخدام C ++.
- واجهة برمجة تطبيقات C ++ لاستخراج البيانات من الجداول في ملفات PDF
- استخراج البيانات من جداول PDF باستخدام C ++
- استخراج البيانات من جدول في منطقة معينة من صفحة PDF
واجهة برمجة تطبيقات C ++ لاستخراج البيانات من الجداول في ملفات PDF
Aspose.PDF for C ++ هي مكتبة C ++ تسمح لك بإنشاء ، قراءة ، وتحديث ملفات PDF. علاوة على ذلك ، تدعم واجهة برمجة التطبيقات (API) استخراج البيانات من الجداول في ملفات PDF. يمكنك إما تثبيت API من خلال NuGet أو تنزيلها مباشرة من قسم التنزيلات.
PM> Install-Package Aspose.PDF.Cpp
استخراج البيانات من جداول PDF باستخدام C ++
فيما يلي خطوات استخراج البيانات من جداول PDF.
- قم بتحميل مستند PDF باستخدام فئة Document.
- كرر خلال صفحات المستند باستخدام طريقة Document-> getPages().
- في كل تكرار ، قم بإنشاء مثيل لفئة TableAbsorber وحدد الصفحة لاستخراج الجداول باستخدام TableAbsorber-> Visit (System :: SharedPtr الصفحة) طريقة.
- احصل على الجداول باستخدام طريقة TableAbsorber-> getTableList() وتكرارها.
- لكل AbsorbedTable ، كرر الصفوف باستخدام طريقة AbsorbedTable-> getRowList().
- لكل AbsorbedRow ، كرر خلال الخلايا باستخدام طريقة AbsorbedRow-> getCellList().
- احصل على TextFragmentCollection لكل AbsorbedCell باستخدام طريقة AbsorbedCell-> getTextFragments() وحلقة من خلالها.
- احصل على TextSegmentCollection لكل TextFragment باستخدام طريقة TextFragment-> getSegments() وحلقة من خلالها.
- استرجع النص من كل جزء نصي واطبعه.
يوضح نموذج التعليمات البرمجية التالي كيفية استخراج البيانات من جداول 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 باستخدام فئة Document.
- استرجع الصفحة التي تحتوي على الجدول باستخدام طريقة Document-> getPages() -> idxget (int32t index).
- مرر عبر التعليقات التوضيحية واحصل على التعليق التوضيحي المربع.
- قم بإنشاء مثيل لفئة TableAbsorber وحدد الصفحة لاستخراج الجداول باستخدام TableAbsorber-> Visit (System :: SharedPtr الصفحة) طريقة.
- احصل على الجداول باستخدام طريقة TableAbsorber-> getTableList() وقم بالتكرار عليها.
- إذا كان الجدول في المنطقة ، فاتبع الخطوات التالية:
- كرر خلال صفوف AbsorbedTable باستخدام طريقة AbsorbedTable-> getRowList().
- لكل AbsorbedRow ، كرر خلال الخلايا باستخدام طريقة AbsorbedRow-> getCellList().
- احصل على TextFragmentCollection لكل AbsorbedCell باستخدام طريقة AbsorbedCell-> getTextFragments() وحلقة من خلالها.
- احصل على TextSegmentCollection لكل TextFragment باستخدام طريقة TextFragment-> getSegments() وحلقة من خلالها.
- استرجع النص من كل جزء نصي واطبعه.
يوضح نموذج التعليمات البرمجية التالي كيفية استخراج البيانات من جدول في منطقة معينة من صفحة 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 بالتفصيل من خلال زيارة الوثائق الرسمية. في حالة وجود أي أسئلة ، لا تتردد في الاتصال بنا على منتدى الدعم المجاني.