
PDF, bugünlerde geçerli olan belge biçimlerinden biridir. Metni, grafikleri, tabloları, ek açıklamaları ve bir dizi başka öğeyi destekler. Belirli durumlarda, faturalar gibi PDF belgelerindeki tablolardan veri almanız gerekebilir. Bunu programlı olarak başarmak için makale, Java kullanarak PDF’deki tablolardan nasıl veri çıkarılacağını kapsar.
- PDF’deki Tablolardan Veri Çıkarmak için Java API
- PDF’deki Tablolardan Veri Çıkarma
- Sayfanın Belirli Bir Alanından Tablo Çıkarma
PDF’deki Tablolardan Veri Çıkarma - Java API
Aspose.PDF for Java, PDF belgeleri oluşturmak ve değiştirmek için zengin özelliklere sahip bir API’dir. PDF belgelerindeki tablolardan verileri çıkarmak için bu API’yi kullanacağız. API’nin JAR’ını indirebilir veya aşağıdaki Maven yapılandırmalarını kullanarak Java uygulamanıza kurabilirsiniz.
<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>
Java’da PDF’deki Tablolardan Veri Çıkarma
Java kullanarak bir PDF’deki tablolardan veri ayıklamak için izlenecek adımlar aşağıdadır.
- İlk olarak, Document sınıfını kullanarak PDF belgesini yükleyin.
- Document.getPages() koleksiyonunu kullanarak PDF’deki sayfalar arasında geçiş yapın.
- Her yinelemede, TableAbsorber nesnesini başlatın ve TableAbsorber.visit(Page) yöntemini kullanarak seçilen sayfayı ziyaret edin.
- Yuvalanmış bir döngüde, TableAbsorber.getTableList() koleksiyonundaki tabloların listesini yineleyin.
- Koleksiyondaki her AbsorbedTable için, AbsorbedTable.getRowList()‘deki satır koleksiyonunu yineleyin.
- Koleksiyondaki her AbsorbedRow için, AbsorbedRow.getCellList()’ten hücre koleksiyonunu yineleyin.
- Son olarak, her AbsorbedCell öğesinin TextFragment koleksiyonunda dolaşın ve metni yazdırın.
Aşağıdaki kod örneği, Java kullanılarak PDF’deki tablolardan nasıl metin çıkarılacağını gösterir.
// Kaynak PDF belgesini yükle
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// Bir tablo emici oluşturun
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
// Sayfaları tara
for (com.aspose.pdf.Page page : pdfDocument.getPages()) {
// ziyaret sayfası
absorber.visit(page);
// Tablolar arasında yineleme
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
System.out.println("Table");
// Satır listesini yineleyin
for (com.aspose.pdf.AbsorbedRow row : table.getRowList()) {
// Hücre listesini yinele
for (com.aspose.pdf.AbsorbedCell cell : row.getCellList()) {
// Metin parçalarını yineleyin
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: Tablo Verilerini PDF Sayfasının Belirli Bir Alanından Çıkarın
Aşağıdakiler, Java kullanarak bir PDF’de sayfanın belirli bir bölümünden tablo çıkarma adımlarıdır.
- İlk olarak, Document sınıfını kullanarak PDF belgesini yükleyin.
- Ardından, Document.getPages() koleksiyonundan istediğiniz Sayfa‘yi seçin.
- Sayfanın Kare ek açıklamasını çıkarın.
- Her yinelemede, TableAbsorber nesnesini başlatın ve TableAbsorber.visit(Page) yöntemini kullanarak seçilen sayfayı ziyaret edin.
- Yuvalanmış bir döngüde, TableAbsorber.getTableList() koleksiyonundaki tabloların listesini yineleyin.
- Alınan tablonun istenen sayfa bölgesinde olup olmadığını kontrol edin.
- Koleksiyondaki her AbsorbedTable için, AbsorbedTable.getRowList() kullanarak satır koleksiyonunu yineleyin.
- Koleksiyondaki her AbsorbedRow için, AbsorbedRow.getCellList() kullanarak hücrelerin koleksiyonunu yineleyin.
- Son olarak, her AbsorbedCell öğesinin TextFragment koleksiyonunda dolaşın ve metni yazdırın.
Aşağıdaki kod örneği, tabloların PDF sayfasının belirli bir bölgesinden nasıl çıkarılacağını gösterir.
// Kaynak PDF belgesini yükle
com.aspose.pdf.Document pdfDocument = new com.aspose.pdf.Document("sample.pdf");
// İstediğiniz sayfanın referansını alın
com.aspose.pdf.Page page = pdfDocument.getPages().get_Item(1);
// Ek açıklama seçici oluştur
com.aspose.pdf.AnnotationSelector annotationSelector = new com.aspose.pdf.AnnotationSelector(
new com.aspose.pdf.SquareAnnotation(page, com.aspose.pdf.Rectangle.getTrivial()));
// Ek açıklamaların listesini alın
java.util.List<com.aspose.pdf.Annotation> list = annotationSelector.getSelected();
if (list.size() == 0) {
System.out.println("Marked tables not found..");
return;
}
// Kare açıklama oluşturma
com.aspose.pdf.SquareAnnotation squareAnnotation = (com.aspose.pdf.SquareAnnotation) list.get(0);
// Tablo emici oluştur ve sayfayı ziyaret et
com.aspose.pdf.TableAbsorber absorber = new com.aspose.pdf.TableAbsorber();
absorber.visit(page);
// Tablolar arasında yineleme
for (com.aspose.pdf.AbsorbedTable table : absorber.getTableList()) {
{
// Tablonun var olup olmadığını kontrol edin
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();
}
}
}
}
}
Ücretsiz Lisans Alın
Aspose.PDF for Java’yı geçici lisans kullanarak değerlendirme sınırlamaları olmaksızın kullanabilirsiniz.
Çözüm
Bu makalede, Java kullanarak bir PDF’deki tablolardan nasıl veri çıkarılacağını öğrendiniz. Ayrıca makale, PDF’de sayfanın belirli bir bölgesinden tabloların nasıl çıkarılacağını da kapsıyordu. Ayrıca, belgeleri kullanarak Aspose.PDF for Java hakkında daha fazla bilgi edinebilirsiniz. Ayrıca sorularınızı forumumuz aracılığıyla da sorabilirsiniz.