استخراج بيانات الجدول من PDF
استخراج الجداول من PDF برمجياً
استخراج الجداول من ملفات PDF ليس مهمة سهلة لأن الجدول يمكن أن يُنشأ بطرق مختلفة.
Aspose.PDF for Java لديه أداة لتسهيل استرجاع الجداول. لاستخراج بيانات الجدول، يجب عليك تنفيذ الخطوات التالية:
-
افتح المستند - أنشئ كائن Document;
-
أنشئ كائن TableAbsorber.
-
قرر أي الصفحات التي سيتم تحليلها وطبق visit على الصفحات المطلوبة. سيتم فحص البيانات الجدولية، وسيتم حفظ النتيجة في قائمة من AbsorbedTable. يمكننا الحصول على هذه القائمة من خلال طريقة getTableList.
-
للحصول على البيانات قم بالتكرار عبر
TableList
وتعامل مع قائمة absorbed rows وقائمة الخلايا المدمجة. يمكننا الوصول إلى القائمة الأولى عن طريق استدعاء طريقة getTableList وإلى القائمة الثانية عن طريق استدعاء طريقة getCellList. -
يحتوي كل AbsorbedCell على TextFragmentCollections. يمكنك معالجته لأغراضك الخاصة.
يظهر المثال التالي استخراج جدول من جميع الصفحات:
public static void Extract_Table() {
// تحميل مستند PDF المصدر
String filePath = "/home/aspose/pdf-examples/Samples/sample_table.pdf";
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(filePath);
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("جدول");
// التكرار على قائمة الصفوف
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();
}
}
}
}
استخراج الجدول في منطقة محددة من صفحة PDF
كل جدول مستوعب يحتوي على خاصية Rectangle التي تصف موقع الجدول على الصفحة.
لذلك، إذا كنت بحاجة إلى استخراج الجداول الموجودة في منطقة معينة، يجب أن تعمل مع إحداثيات محددة.
المثال التالي يوضح كيفية استخراج جدول محدد بتعليق مربع:
public static void Extract_Marked_Table() {
// تحميل مستند PDF المصدر
String filePath = "<... أدخل مسار ملف pdf هنا ...>";
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(filePath);
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("الجداول المحددة غير موجودة..");
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();
}
}
}
}
}
}
استخراج بيانات الجدول من PDF وتخزينها في ملف CSV
يوضح المثال التالي كيفية استخراج الجدول وتخزينه كملف CSV. لرؤية كيفية تحويل PDF إلى جدول بيانات Excel، يرجى الرجوع إلى مقال تحويل PDF إلى Excel.
public static void Extract_Table_Save_CSV()
{
String filePath = "/home/admin1/pdf-examples/Samples/sample_table.pdf";
// تحميل مستند PDF
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document(filePath);
// إنشاء كائن خيار حفظ Excel
com.aspose.pdf.ExcelSaveOptions excelSave = new com.aspose.pdf.ExcelSaveOptions();
excelSave.setFormat(com.aspose.pdf.ExcelSaveOptions.ExcelFormat.CSV);
// حفظ الخرج بتنسيق XLS
pdfDocument.save("PDFToXLS_out.xlsx", excelSave);
}