Bekerja dengan Artifacts di .NET

Artifacts dalam PDF adalah objek grafis atau elemen lain yang bukan bagian dari konten asli dokumen. Mereka biasanya digunakan untuk dekorasi, tata letak, atau keperluan latar belakang. Contoh artifacts termasuk header halaman, footer, pemisah, atau gambar yang tidak menyampaikan makna apapun.

Tujuan artifacts dalam PDF adalah untuk memungkinkan perbedaan antara elemen konten dan non-konten. Hal ini penting untuk aksesibilitas, karena pembaca layar dan teknologi bantu lainnya dapat mengabaikan artifacts dan fokus pada konten yang relevan. Artifacts juga dapat meningkatkan kinerja dan kualitas dokumen PDF, karena mereka dapat dihilangkan dari pencetakan, pencarian, atau penyalinan.

Untuk membuat sebuah elemen sebagai artifact di PDF, Anda perlu menggunakan Artifact class. Kelas ini berisi properti-properti berguna berikut:

  • Artifact.Type – mengambil artifact type (mendukung nilai dari enumerasi Artifact.ArtifactType di mana nilainya termasuk Background, Layout, Page, Pagination, dan Undefined).
  • Artifact.Subtype – mengambil artifact subtype (mendukung nilai dari enumerasi Artifact.ArtifactSubtype di mana nilainya termasuk Background, Footer, Header, Undefined, Watermark).
  • Artifact.Image – Mendapatkan gambar artifact (jika gambar ada, jika tidak maka null).
  • Artifact.Text – Mendapatkan teks artifact.
  • Artifact.Contents – Mengambil koleksi operator internal artifact. Tipe yang didukung adalah System.Collections.ICollection.
  • Artifact.Form – Mengambil XForm artifact (jika XForm digunakan). Artifacts berupa Watermark, header, dan footer mengandung XForm yang menunjukkan semua konten artifact.
  • Artifact.Rectangle – Mengambil posisi artifact pada halaman.
  • Artifact.Rotation – Mengambil rotasi artifact (dalam derajat, nilai positif menunjukkan rotasi berlawanan arah jarum jam).
  • Artifact.Opacity – Mengambil opacity artifact. Nilai yang mungkin ada dalam rentang 0…1, di mana 1 berarti sepenuhnya opaque.

Kelas-kelas berikut mungkin juga berguna untuk bekerja dengan artifacts:

Bekerja dengan Watermark yang Sudah Ada

Watermark yang dibuat dengan Adobe Acrobat disebut sebagai artifact (sebagaimana dijelaskan dalam 14.8.2.2 Real Content and Artifacts pada spesifikasi PDF).

Untuk mendapatkan semua Watermark pada halaman tertentu, kelas Page memiliki properti Artifacts.

Potongan kode berikut menunjukkan cara untuk mendapatkan semua watermark pada halaman pertama dari sebuah file PDF.

Note: Kode ini juga bekerja dengan Aspose.PDF.Drawing library.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ExtractWatermarkFromPDF()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "sample-w.pdf"))
    {
        // Get the watermarks from the first page artifacts
        var watermarks = document.Pages[1].Artifacts
            .Where(artifact =>
                artifact.Type == Aspose.Pdf.Artifact.ArtifactType.Pagination
                && artifact.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Watermark);

        // Iterate through the found watermark artifacts and print details
        foreach (Aspose.Pdf.WatermarkArtifact item in watermarks.Cast<Aspose.Pdf.WatermarkArtifact>())
        {
            Console.WriteLine($"{item.Text} {item.Rectangle}");
        }
    }
}

Bekerja dengan Latar Belakang sebagai Artifacts

Gambar latar belakang dapat digunakan untuk menambahkan watermark, atau desain halus lainnya, ke dokumen. Dalam Aspose.PDF for .NET, setiap dokumen PDF adalah koleksi halaman dan setiap halaman berisi koleksi artifacts. Kelas BackgroundArtifact dapat digunakan untuk menambahkan gambar latar belakang pada objek halaman.

Potongan kode berikut menunjukkan cara untuk menambahkan gambar latar belakang ke halaman PDF menggunakan objek BackgroundArtifact.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AddBackgroundImageToPDF()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "sample.pdf"))
    {
        // Create a new BackgroundArtifact and set the background image
        var background = new Aspose.Pdf.BackgroundArtifact()
        {
            BackgroundImage = File.OpenRead(dataDir + "background.jpg")
        };

        // Add the background image to the first page's artifacts
        document.Pages[1].Artifacts.Add(background);

        // Save PDF document with the added background
        document.Save(dataDir + "SampleArtifactsBackground_out.pdf");
    }
}

Jika Anda ingin, karena alasan tertentu, menggunakan latar belakang berwarna solid, silakan ubah kode sebelumnya dengan cara berikut:

 // For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET

 private static void AddBackgroundColorToPDF()
 {
    // The path to the documents directory
     var dataDir = RunExamples.GetDataDir_AsposePdf();

     // Open PDF document
     using (var document = new Aspose.Pdf.Document(dataDir + "sample.pdf"))
     {
         // Create a new BackgroundArtifact and set the background color
         var background = new Aspose.Pdf.BackgroundArtifact()
         {
             BackgroundColor = Aspose.Pdf.Color.DarkKhaki
         };

         // Add the background color to the first page's artifacts
         document.Pages[1].Artifacts.Add(background);

         // Save PDF document
         document.Save(dataDir + "SampleArtifactsBackground_out.pdf");
     }
 }

Menghitung Artifact dari Tipe Tertentu

Untuk menghitung jumlah total artifact dari tipe tertentu (misalnya, jumlah total watermark), gunakan kode berikut:

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void CountPDFArtifacts()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "sample.pdf"))
    {
        // Get pagination artifacts from the first page
        var paginationArtifacts = document.Pages[1].Artifacts
            .Where(artifact => artifact.Type == Aspose.Pdf.Artifact.ArtifactType.Pagination);

        // Count and display the number of each artifact type
        Console.WriteLine("Watermarks: {0}",
            paginationArtifacts.Count(a => a.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Watermark));
        Console.WriteLine("Backgrounds: {0}",
            paginationArtifacts.Count(a => a.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Background));
        Console.WriteLine("Headers: {0}",
            paginationArtifacts.Count(a => a.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Header));
        Console.WriteLine("Footers: {0}",
            paginationArtifacts.Count(a => a.Subtype == Aspose.Pdf.Artifact.ArtifactSubtype.Footer));
    }
}

Menambahkan Artifact Penomoran Bates

Untuk menambahkan artifact penomoran Bates ke sebuah dokumen, panggil method ekstensi AddBatesNumbering(BatesNArtifact batesNArtifact) pada PageCollection, dengan mengoper objek BatesNArtifact sebagai parameter:

Atau, Anda dapat mengoper koleksi PaginationArtifacts:

Sebagai alternatif, Anda dapat menambahkan artifact penomoran Bates menggunakan delegate aksi:

Untuk menghapus penomoran Bates, gunakan kode berikut: