Informasi Gambar Dalam File PDF

Perkenalan

File PDF ada di mana-mana akhir-akhir ini—hampir setiap dokumen profesional dan pribadi menemukan jalannya ke dalam format ini di beberapa titik. Baik itu laporan, brosur, atau eBook, memahami cara berinteraksi dengan file-file ini secara terprogram menawarkan banyak kemungkinan. Salah satu persyaratan umum adalah mengekstrak informasi gambar dari file PDF. Dalam panduan ini, kita akan membahas cara menggunakan pustaka Aspose.PDF untuk .NET guna mengekstrak detail penting tentang gambar yang disematkan dalam dokumen PDF.

Prasyarat

Sebelum kita masuk ke inti pengkodean, ada beberapa prasyarat yang perlu Anda miliki:

  1. Lingkungan Pengembangan: Anda perlu menyiapkan lingkungan pengembangan .NET. Ini bisa berupa Visual Studio atau IDE lain yang kompatibel dengan .NET.
  2. Pustaka Aspose.PDF: Pastikan Anda memiliki akses ke pustaka Aspose.PDF. Anda dapat mengunduhnya dariSitus web Aspose.
  3. Pengetahuan Dasar C#: Keakraban dengan C# dan konsep pemrograman berorientasi objek akan membantu Anda mengikuti tutorial dengan mudah.
  4. Dokumen PDF: Siapkan contoh dokumen PDF yang berisi gambar untuk menguji kode Anda.

Mengimpor Paket

Untuk mulai menggunakan pustaka Aspose.PDF, Anda perlu mengimpor namespace yang diperlukan ke dalam berkas C# Anda. Berikut ikhtisar singkatnya:

using System.IO;
using Aspose.Pdf;
using System;

Ruang nama ini akan memberi Anda akses ke kelas dan metode yang diperlukan untuk memanipulasi berkas PDF dan mengekstrak data gambar.

Setelah semuanya siap, saatnya untuk membaginya menjadi beberapa langkah yang mudah dikelola. Kita akan menulis program C# yang memuat dokumen PDF, menelusuri setiap halaman, dan mengekstrak dimensi dan resolusi setiap gambar dalam dokumen.

Langkah 1: Inisialisasi Dokumen

Pada langkah ini, kita akan menginisialisasi dokumen PDF menggunakan jalur ke file PDF Anda. Anda harus mengganti"YOUR DOCUMENT DIRECTORY" dengan jalur sebenarnya tempat berkas PDF Anda berada.

// Jalur ke direktori dokumen.
string dataDir = "YOUR DOCUMENT DIRECTORY";
// Muat file PDF sumber
Document doc = new Document(dataDir + "ImageInformation.pdf");

Kami menciptakan sebuahDocument objek yang memuat PDF dari direktori yang ditentukan. Ini akan memungkinkan kita untuk bekerja dengan isi berkas.

Langkah 2: Tetapkan Resolusi Default dan Inisialisasi Struktur Data

Selanjutnya, kami menetapkan resolusi default untuk gambar, yang berguna untuk perhitungan. Kami juga akan menyiapkan array untuk menampung nama gambar dan tumpukan untuk mengelola status grafis.

// Tentukan resolusi default untuk gambar
int defaultResolution = 72;
System.Collections.Stack graphicsState = new System.Collections.Stack();
// Tentukan objek daftar array yang akan menampung nama gambar
System.Collections.ArrayList imageNames = new System.Collections.ArrayList(doc.Pages[1].Resources.Images.Names);

ItudefaultResolution variabel membantu kita menghitung resolusi gambar dengan benar.graphicsStatetumpukan berfungsi sebagai sarana untuk menyimpan status grafis dokumen saat ini ketika kita menemui operator transformasi.

Langkah 3: Proses Setiap Operator di Halaman

Sekarang kita akan mengulang semua operator pada halaman pertama dokumen. Di sinilah pekerjaan berat dilakukan.

foreach (Operator op in doc.Pages[1].Contents)
{
    // ...Operator proses...
}

Setiap operator dalam berkas PDF adalah perintah yang memberi tahu perender cara mengelola elemen grafis, termasuk gambar.

Langkah 4: Menangani Operator GSave/GRestore

Di dalam loop, kita akan menangani perintah penyimpanan dan pemulihan grafik untuk melacak perubahan yang dibuat pada status grafik.

if (opSaveState != null) 
{
    // Simpan status sebelumnya
    graphicsState.Push(((Matrix)graphicsState.Peek()).Clone());
} 
else if (opRestoreState != null) 
{
    // Mengembalikan keadaan sebelumnya
    graphicsState.Pop();
}

GSave menyimpan status grafis saat ini, sementaraGRestore mengembalikan status terakhir yang disimpan, sehingga memungkinkan kita mengembalikan transformasi apa pun saat memproses gambar.

Langkah 5: Kelola Matriks Transformasi

Berikutnya, kami menangani penggabungan matriks transformasi saat menerapkan transformasi pada gambar.

else if (opCtm != null) 
{
    Matrix cm = new Matrix(
        (float)opCtm.Matrix.A,
        (float)opCtm.Matrix.B,
        (float)opCtm.Matrix.C,
        (float)opCtm.Matrix.D,
        (float)opCtm.Matrix.E,
        (float)opCtm.Matrix.F);
    
    ((Matrix)graphicsState.Peek()).Multiply(cm);
    continue;
}

Saat matriks transformasi diterapkan, kami mengalikannya dengan matriks saat ini yang tersimpan dalam status grafik sehingga kami dapat melacak setiap penskalaan atau penerjemahan yang diterapkan pada gambar.

Langkah 6: Ekstrak Informasi Gambar

Terakhir, kami memproses operator gambar untuk gambar dan mengekstrak informasi yang diperlukan, seperti dimensi dan resolusi.

else if (opDo != null) 
{
    // Menangani operator Do yang menggambar objek
    if (imageNames.Contains(opDo.Name)) 
    {
        Matrix lastCTM = (Matrix)graphicsState.Peek();
        XImage image = doc.Pages[1].Resources.Images[opDo.Name];
        double scaledWidth = Math.Sqrt(Math.Pow(lastCTM.Elements[0], 2) + Math.Pow(lastCTM.Elements[1], 2));
        double scaledHeight = Math.Sqrt(Math.Pow(lastCTM.Elements[2], 2) + Math.Pow(lastCTM.Elements[3], 2));
        double originalWidth = image.Width;
        double originalHeight = image.Height;
        
        double resHorizontal = originalWidth * defaultResolution / scaledWidth;
        double resVertical = originalHeight * defaultResolution / scaledHeight;
        
        // Keluarkan informasinya
        Console.Out.WriteLine(string.Format(dataDir + "image {0} ({1:.##}:{2:.##}): res {3:.##} x {4:.##}",
                         opDo.Name, scaledWidth, scaledHeight, resHorizontal, resVertical));
    }
}

Di sini, kami memeriksa apakah operator bertanggung jawab untuk menggambar sebuah gambar. Jika ya, kami memperoleh objek XImage yang sesuai, menghitung dimensi dan resolusinya yang diskalakan, dan mencetak informasi yang diperlukan.

Kesimpulan

Selamat! Anda baru saja membuat contoh yang berfungsi tentang cara mengekstrak informasi gambar dari file PDF menggunakan Aspose.PDF untuk .NET. Kemampuan ini dapat sangat berguna bagi pengembang yang perlu menganalisis atau memanipulasi dokumen PDF untuk berbagai aplikasi, seperti pelaporan, ekstraksi data, atau bahkan penampil PDF khusus.

Pertanyaan yang Sering Diajukan

Apa itu pustaka Aspose.PDF?

Pustaka Aspose.PDF adalah alat yang hebat untuk membuat, memanipulasi, dan mengonversi file PDF dalam aplikasi .NET.

Bisakah saya menggunakan perpustakaan secara gratis?

Ya, Aspose menawarkan uji coba gratis. Anda dapat mengunduhnyaDi Sini.

Jenis format gambar apa yang dapat diekstraksi?

Pustaka mendukung berbagai format gambar, termasuk JPEG, PNG, dan TIFF, asalkan disematkan dalam PDF.

Apakah Aspose digunakan untuk tujuan komersial?

Ya, Anda dapat menggunakan produk Aspose secara komersial. Untuk lisensi, kunjungihalaman pembelian.

Bagaimana cara mendapatkan dukungan untuk Aspose?

Anda dapat mengakses forum dukunganDi Sini.