PDF telah menjadi salah satu format dokumen yang paling banyak digunakan di banyak bidang. Dalam berbagai kasus, ini digunakan untuk menghasilkan faktur di mana data tampak dalam bentuk tabel. Dalam kasus seperti itu, Anda mungkin perlu mengurai PDF untuk membaca data dari tabel secara terprogram. Untuk mencapai ini, artikel ini membahas cara mengekstrak data dari tabel PDF menggunakan C#.
- C# API untuk Mengekstrak Tabel PDF
- Ekstrak Data dari Tabel PDF di C#
- Ekstrak Tabel dari Area Halaman Tertentu
C# API untuk Mengekstrak Tabel dari PDF
Untuk mengekstrak data dari tabel dalam file PDF, kami akan menggunakan Aspose.PDF for .NET. Ini adalah API yang kuat yang menyediakan berbagai fitur manipulasi PDF. Anda dapat mengunduh API atau menginstalnya menggunakan NuGet.
PM> Install-Package Aspose.PDF
Ekstrak Data dari Tabel PDF di C#
Berikut ini adalah langkah-langkah untuk mengekstrak data dari tabel dalam PDF menggunakan C#.
- Muat dokumen PDF menggunakan kelas Document.
- Telusuri halaman dalam PDF menggunakan koleksi Document.Pages.
- Di setiap iterasi, inisialisasi objek TableAbsorber dan kunjungi halaman yang dipilih menggunakan metode TableAbsorber.Visit(Page).
- Dalam loop bersarang, ulangi daftar tabel di koleksi TableAbsorber.TableList.
- Untuk setiap AbsorbedTable dalam koleksi, ulangi melalui koleksi baris di AbsorbedTable.RowList.
- Untuk setiap AbsorbedRow dalam koleksi, lakukan iterasi melalui koleksi sel di AbsorbedRow.CellList.
- Terakhir, ulangi koleksi TextFragments dari setiap AbsorbedCell dan cetak teksnya.
Contoh kode berikut menunjukkan cara mengekstrak teks dari tabel PDF di C#.
// Muat dokumen PDF sumber
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Ulangi halaman
foreach (var page in pdfDocument.Pages)
{
// Buat penyerap tabel dan kunjungi halaman
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Ulangi setiap tabel yang diserap
foreach (AbsorbedTable table in absorber.TableList)
{
Console.WriteLine("Table");
// Ulangi setiap baris dalam tabel
foreach (AbsorbedRow row in table.RowList)
{
// Ulangi setiap sel dalam baris
foreach (AbsorbedCell cell in row.CellList)
{
// Ulangi fragmen teks
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();
}
}
}
Ekstrak Tabel dari Area Halaman Tertentu
Berikut ini adalah langkah-langkah untuk mengekstrak tabel dari bagian halaman tertentu dalam PDF menggunakan C#.
- Muat dokumen PDF menggunakan kelas Document.
- Pilih Halaman yang diinginkan dari koleksi Document.Pages.
- Ekstrak anotasi Kotak halaman.
- Inisialisasi objek TableAbsorber dan kunjungi halaman menggunakan metode TableAbsorber.Visit(Page).
- Dalam loop bersarang, ulangi daftar tabel di koleksi TableAbsorber.TableList.
- Jika tabel berada di wilayah maka lakukan langkah-langkah berikut.
- Iterasi melalui kumpulan baris di AbsorbedTable.RowList.
- Untuk setiap AbsorbedRow dalam koleksi, ulangi melalui koleksi sel di AbsorbedRow.CellList.
- Terakhir, ulangi koleksi TextFragments dari setiap AbsorbedCell dan cetak teksnya.
Contoh kode berikut menunjukkan cara mengekstrak tabel dari wilayah tertentu di halaman PDF.
// Muat dokumen PDF sumber
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document("sample.pdf");
// Pilih halaman dan ekstrak anotasi perseginya
var page = pdfDocument.Pages[1];
var squareAnnotation =
page.Annotations.FirstOrDefault(ann => ann.AnnotationType == Annotations.AnnotationType.Square)
as Annotations.SquareAnnotation;
// Buat penyerap tabel dan kunjungi halaman
Aspose.Pdf.Text.TableAbsorber absorber = new Aspose.Pdf.Text.TableAbsorber();
absorber.Visit(page);
// Ulangi setiap tabel yang diserap dalam daftar
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)
{
// Ulangi setiap baris tabel
foreach (AbsorbedRow row in table.RowList)
{
// Ulangi setiap sel dalam baris
foreach (AbsorbedCell cell in row.CellList)
{
// Ulangi fragmen teks dan cetak teks
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();
}
}
}
Dapatkan Lisensi Gratis
Anda dapat menggunakan Aspose.PDF for .NET tanpa batasan evaluasi menggunakan lisensi sementara.
Kesimpulan
Pada artikel ini, Anda telah mempelajari cara mengekstrak data dari tabel dalam PDF menggunakan C#. Selanjutnya, Anda telah melihat cara mengekstrak tabel dari wilayah tertentu pada halaman dalam PDF. Anda dapat mempelajari lebih lanjut tentang C# PDF API menggunakan dokumentasi. Selain itu, Anda dapat memposting pertanyaan Anda di forum kami.