PDF, çok sayıda alanda en yaygın kullanılan belge biçimlerinden biri haline geldi. Çeşitli durumlarda, verilerin tablo şeklinde göründüğü faturalar oluşturmak için kullanılır. Bu gibi durumlarda, tablolardan programlı olarak veri okumak için PDF’yi ayrıştırmanız gerekebilir. Bunu başarmak için makale, C# kullanarak PDF tablolarından nasıl veri çıkarılacağını kapsar.
- PDF Tablolarını Çıkarmak için C# API
- C# ile PDF Tablolarından Veri Çıkarma
- Sayfanın Belirli Bir Alanından Tablo Çıkarma
Tabloları PDF’den Çıkarmak için C# API
PDF dosyalarındaki tablolardan veri çıkarmak için Aspose.PDF for .NET kullanacağız. Çok çeşitli PDF işleme özellikleri sağlayan güçlü bir API’dir. API’yi indirebilir veya NuGet kullanarak yükleyebilirsiniz.
PM> Install-Package Aspose.PDF
C# ile PDF Tablolarından Veri Çıkarma
Aşağıda, C# kullanarak bir PDF’deki tablolardan veri ayıklama adımları yer almaktadır.
- Belge sınıfını kullanarak PDF belgesini yükleyin.
- Document.Pages 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.TableList koleksiyonundaki tabloların listesini yineleyin.
- Koleksiyondaki her AbsorbedTable için, AbsorbedTable.RowList içindeki satır koleksiyonunu yineleyin.
- Koleksiyondaki her AbsorbedRow için, AbsorbedRow.CellList içindeki hücre koleksiyonunu yineleyin.
- Son olarak, her AbsorbedCell öğesinin TextFragments koleksiyonunda dolaşın ve metni yazdırın.
Aşağıdaki kod örneği, C# dilinde PDF tablosundan nasıl metin çıkarılacağını gösterir.
// Kaynak PDF belgesini yükle
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Sayfalar arasında döngü
foreach (var page in pdfDocument.Pages)
{
// Bir tablo emici oluşturun ve sayfayı ziyaret edin
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Emilen her tablodan döngü yapın
foreach (AbsorbedTable table in absorber.TableList)
{
Console.WriteLine("Table");
// Tablodaki her satırda döngü yapın
foreach (AbsorbedRow row in table.RowList)
{
// Satırdaki her hücrede döngü yapın
foreach (AbsorbedCell cell in row.CellList)
{
// Metin parçaları arasında döngü
foreach (TextFragment fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (TextSegment seg in fragment.Segments)
sb.Append(seg.Text);
Console.Write($"{sb.ToString()}|");
}
}
Console.WriteLine();
}
}
}
Sayfanın Belirli Bir Alanından Tablo Çıkarma
Aşağıda, C# kullanarak bir PDF’de sayfanın belirli bir bölümünden tablo çıkarmak için izlenecek adımlar yer almaktadır.
- Belge sınıfını kullanarak PDF belgesini yükleyin.
- Document.Pages koleksiyonundan istediğiniz Sayfa‘yi seçin.
- Sayfanın Kare ek açıklamasını çıkarın.
- TableAbsorber nesnesini başlatın ve TableAbsorber.Visit(Page) yöntemini kullanarak sayfayı ziyaret edin.
- Yuvalanmış bir döngüde, TableAbsorber.TableList koleksiyonundaki tabloların listesini yineleyin.
- Tablo bölgedeyse, aşağıdaki adımları gerçekleştirin.
- AbsorbedTable.RowList içindeki satır koleksiyonunu yineleyin.
- Koleksiyondaki her AbsorbedRow için, AbsorbedRow.CellList içindeki hücrelerin koleksiyonunu yineleyin.
- Son olarak, her AbsorbedCell öğesinin TextFragments koleksiyonunda dolaşın ve metni yazdırın.
Aşağıdaki kod örneği, tablonun PDF sayfasının belirli bir bölgesinden nasıl çıkarılacağını gösterir.
// Kaynak PDF belgesini yükle
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Sayfayı seçin ve kare ek açıklamasını çıkarın
var page = pdfDocument.Pages[1];
var squareAnnotation =
page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
as Annotations.SquareAnnotation;
// Tablo emici oluşturun ve sayfayı ziyaret edin
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Listedeki emilen her tabloda döngü yapın
foreach (AbsorbedTable table in absorber.TableList)
{
var isInRegion = (squareAnnotation.Rect.LLX < table.Rectangle.LLX) &&
(squareAnnotation.Rect.LLY < table.Rectangle.LLY) &&
(squareAnnotation.Rect.URX > table.Rectangle.URX) &&
(squareAnnotation.Rect.URY > table.Rectangle.URY);
if (isInRegion)
{
// Tablonun her satırında döngü yapın
foreach (AbsorbedRow row in table.RowList)
{
// Satırdaki her hücrede döngü yapın
foreach (AbsorbedCell cell in row.CellList)
{
// Metin parçaları arasında dolaşın ve metni yazdırın
foreach (TextFragment fragment in cell.TextFragments)
{
var sb = new StringBuilder();
foreach (TextSegment seg in fragment.Segments)
{
sb.Append(seg.Text);
}
var text = sb.ToString();
Console.Write($"{text}|");
}
}
Console.WriteLine();
}
}
}
Ücretsiz Lisans Alın
Aspose.PDF for .NET’i bir geçici lisans kullanarak değerlendirme sınırlamaları olmaksızın kullanabilirsiniz.
Çözüm
Bu makalede, C# kullanarak bir PDF’deki tablolardan veri çıkarmayı öğrendiniz. Ayrıca, PDF’de sayfanın belirli bir bölgesinden nasıl tablo çıkarılacağını gördünüz. Belgeleri kullanarak C# PDF API hakkında daha fazlasını keşfedebilirsiniz. Ayrıca, sorularınızı forumumuza gönderebilirsiniz.