PDF یکی از قالبهای سند حاکم این روزها است. از متن، گرافیک، جداول، حاشیه نویسی و طیف وسیعی از عناصر دیگر پشتیبانی می کند. در موارد خاص، ممکن است لازم باشد داده ها را از جداول در اسناد PDF مانند فاکتورها استخراج کنید. برای دستیابی به این هدف از نظر برنامهریزی، مقاله نحوه استخراج دادهها از جداول در PDF با استفاده از جاوا را پوشش میدهد.
- Java API برای استخراج داده ها از جداول در PDF
- استخراج داده ها از جداول به صورت PDF
- استخراج جدول از یک منطقه خاص از صفحه
استخراج داده ها از جداول در PDF - Java API
Aspose.PDF برای جاوا یک API غنی از ویژگی برای ایجاد و دستکاری اسناد PDF است. ما از این API برای استخراج داده ها از جداول در اسناد PDF استفاده خواهیم کرد. شما می توانید JAR API را دانلود یا با استفاده از تنظیمات 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 با استفاده از جاوا آمده است.
- ابتدا سند PDF را با استفاده از کلاس Document بارگذاری کنید.
- با استفاده از مجموعه Document.getPages() صفحات را در PDF حلقه بزنید.
- در هر تکرار، شی TableAbsorber را مقداردهی اولیه کنید و با استفاده از روش TableAbsorber.visit(Page) از صفحه انتخاب شده بازدید کنید.
- در یک حلقه تو در تو، لیست جداول موجود در مجموعه 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.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();
}
}
}
جاوا: استخراج داده های جدول از ناحیه خاصی از صفحه PDF
در زیر مراحل استخراج جدول از قسمت خاصی از صفحه در PDF با استفاده از جاوا آورده شده است.
- ابتدا سند PDF را با استفاده از کلاس Document بارگذاری کنید.
- سپس، Page مورد نظر را از مجموعه Document.getPages() انتخاب کنید.
- حاشیه نویسی مربع صفحه را استخراج کنید.
- در هر تکرار، شی TableAbsorber را مقداردهی اولیه کنید و با استفاده از روش TableAbsorber.visit(Page) از صفحه انتخاب شده بازدید کنید.
- در یک حلقه تودرتو، لیست جداول موجود در مجموعه 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 برای جاوا بدون محدودیت ارزیابی با استفاده از مجوز موقت استفاده کنید.
نتیجه
در این مقاله نحوه استخراج داده ها از جداول در یک PDF با استفاده از جاوا را یاد گرفتید. علاوه بر این، مقاله نحوه استخراج جداول از یک منطقه خاص از صفحه را در PDF شرح داد. علاوه بر این، میتوانید با استفاده از مستندات درباره Aspose.PDF برای جاوا اطلاعات بیشتری کسب کنید. علاوه بر این، میتوانید سوالات خود را از طریق [تالار گفتمان30 ما بپرسید.