PDF هو أحد تنسيقات الوثائق الحاكمة هذه الأيام. وهو يدعم النصوص والرسومات والجداول والشروح ومجموعة من العناصر الأخرى. في حالات معينة ، قد تحتاج إلى استخراج البيانات من الجداول في مستندات PDF مثل الفواتير. لتحقيق هذا برمجيًا ، تتناول المقالة كيفية استخراج البيانات من الجداول في PDF باستخدام Java.
- Java API لاستخراج البيانات من الجداول في PDF
- استخراج البيانات من الجداول في PDF
- استخراج الجدول من منطقة معينة من الصفحة
استخراج البيانات من الجداول في PDF - Java API
Aspose.PDF for Java هي واجهة برمجة تطبيقات غنية بالمميزات لإنشاء مستندات PDF ومعالجتها. سنستخدم واجهة برمجة التطبيقات هذه لاستخراج البيانات من الجداول في مستندات PDF. يمكنك إما تنزيل JAR الخاص بواجهة برمجة التطبيقات أو تثبيته داخل تطبيق Java الخاص بك باستخدام تكوينات Maven التالية.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>21.9</version>
</dependency>
استخراج البيانات من الجداول في PDF بجافا
فيما يلي خطوات استخراج البيانات من الجداول في ملف PDF باستخدام Java.
- أولاً ، قم بتحميل مستند PDF باستخدام فئة Document.
- قم بالتكرار خلال الصفحات في PDF باستخدام مجموعة Document.getPages().
- في كل تكرار ، قم بتهيئة كائن TableAbsorber وقم بزيارة الصفحة المحددة باستخدام طريقة TableAbsorber.visit (صفحة).
- في حلقة متداخلة ، قم بالتمرير عبر قائمة الجداول في مجموعة TableAbsorber.getTableList().
- لكل AbsorbedTable في المجموعة ، كرر خلال مجموعة الصفوف من AbsorbedTable.getRowList().
- لكل AbsorbedRow في المجموعة ، كرر خلال تجميع الخلايا من AbsorbedRow.getCellList().
- أخيرًا ، قم بعمل حلقة خلال TextFragment مجموعة من كل AbsorbedCell واطبع النص.
يوضح نموذج التعليمات البرمجية التالي كيفية استخراج النص من الجداول في PDF باستخدام Java.
// تحميل مستند PDF المصدر
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// قم بإنشاء طاولة absrober
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
// مسح الصفحات
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
// صفحة الزيارة
absorber.visit(page);
// كرر من خلال الجداول
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
System.out.println("Table");
// تكرار خلال قائمة الصفوف
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
// كرر قائمة الخلية
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
// كرر من خلال أجزاء النص
for (com.aspose.pdf.TextFragment fragment : cell.getTextFragments()) {
StringBuilder sb = new StringBuilder();
for (com.aspose.pdf.TextSegment seg : fragment.getSegments())
sb.append(seg.getText());
System.out.print(sb.toString() + "|");
}
}
System.out.println();
}
}
}
Java: استخراج بيانات الجدول من منطقة معينة من صفحة PDF
فيما يلي خطوات استخراج الجدول من جزء معين من الصفحة في ملف PDF باستخدام Java.
- أولاً ، قم بتحميل مستند PDF باستخدام فئة المستند.
- ثم حدد الصفحة المطلوبة من Document.getPages() المجموعة.
- استخرج التعليق التوضيحي المربع للصفحة.
- في كل تكرار ، قم بتهيئة كائن TableAbsorber وقم بزيارة الصفحة المحددة باستخدام طريقة TableAbsorber.visit (صفحة).
- في حلقة متداخلة ، كرر خلال قائمة الجداول في مجموعة TableAbsorber.getTableList().
- تحقق مما إذا كان الجدول الممتص في منطقة الصفحة المطلوبة.
- لكل AbsorbedTable في المجموعة ، كرر خلال مجموعة الصفوف باستخدام AbsorbedTable.getRowList().
- لكل AbsorbedRow في المجموعة ، كرر خلال تجميع الخلايا باستخدام AbsorbedRow.getCellList().
- أخيرًا ، قم بعمل حلقة خلال TextFragment مجموعة من كل AbsorbedCell واطبع النص.
يوضح نموذج التعليمات البرمجية التالي كيفية استخراج الجداول من منطقة معينة في صفحة PDF.
// تحميل مستند PDF المصدر
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// احصل على مرجع للصفحة المطلوبة
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);
// إنشاء محدد التعليقات التوضيحية
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));
// احصل على قائمة بالتعليقات التوضيحية
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
System.out.println("Marked tables not found..");
return;
}
// أنشئ تعليقًا توضيحيًا مربعًا
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);
// إنشاء طاولة امتصاص وزيارة الصفحة
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);
// كرر من خلال الجداول
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
{
// تحقق من وجود الجدول
boolean isInRegion = (squareAnnotation.getRect().getLLX() < table.getRectangle().getLLX())
&& (squareAnnotation.getRect().getLLY() < table.getRectangle().getLLY())
&& (squareAnnotation.getRect().getURX() > table.getRectangle().getURX())
&& (squareAnnotation.getRect().getURY() > table.getRectangle().getURY());
if (isInRegion) {
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
{
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
for (com.aspose.pdf.TextFragment fragment : cell.getTextFragments()) {
StringBuilder sb = new StringBuilder();
for (com.aspose.pdf.TextSegment seg : fragment.getSegments())
sb.append(seg.getText());
System.out.print(sb.toString() + "|");
}
}
System.out.println();
}
}
}
}
}
احصل على رخصة مجانية
يمكنك استخدام Aspose.PDF لـ Java بدون قيود تقييمية باستخدام ترخيص مؤقت.
استنتاج
في هذه المقالة ، تعلمت كيفية استخراج البيانات من الجداول في ملف PDF باستخدام Java. علاوة على ذلك ، تناول المقال كيفية استخراج الجداول من منطقة معينة من الصفحة في ملف PDF. علاوة على ذلك ، يمكنك معرفة المزيد حول Aspose.PDF لجافا باستخدام التوثيق. بالإضافة إلى ذلك ، يمكنك طرح أسئلتك عبر المنتدى.