Bekerja dengan lapisan PDF menggunakan C#

Lapisan PDF memungkinkan dokumen PDF untuk berisi set konten yang berbeda yang dapat dilihat atau disembunyikan secara selektif. Setiap lapisan dalam PDF dapat mencakup teks, gambar, atau grafik, dan pengguna dapat menghidupkan atau mematikan lapisan ini, tergantung pada kebutuhan mereka. Lapisan sering digunakan dalam dokumen kompleks di mana konten yang berbeda perlu diorganisir atau dipisahkan.

Kunci lapisan PDF

Dengan Aspose.PDF for .NET Anda dapat membuka PDF, mengunci lapisan tertentu di halaman pertama, dan menyimpan dokumen dengan perubahan tersebut.

Sejak rilis 24.5, fitur ini telah diterapkan.

Ada dua metode baru dan satu properti yang ditambahkan:

  • Layer.Lock(); - Mengunci lapisan.
  • Layer.Unlock(); - Membuka kunci lapisan.
  • Layer.Locked; - Properti, menunjukkan status terkunci lapisan.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void LockLayerInPDF()
{
	// The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Layers();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
    {
        // Get the first page and the first layer
        var page = document.Pages[1];
        var layer = page.Layers[0];

        // Lock the layer
        layer.Lock();

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

Ekstrak elemen lapisan PDF

Perpustakaan Aspose.PDF for .NET memungkinkan ekstraksi setiap lapisan dari halaman pertama dan menyimpan setiap lapisan ke dalam file terpisah.

Untuk membuat PDF baru dari sebuah lapisan, potongan kode berikut dapat digunakan:

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

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
    {
        // Get layers from the first page
        var layers = document.Pages[1].Layers;

        // Save each layer to the output path
        foreach (var layer in layers)
        {
            layer.Save(dataDir + "Layers_out.pdf");
        }
    }
}

Rilis 24.9 telah menghasilkan pembaruan untuk fitur ini.

Dimungkinkan untuk mengekstrak elemen lapisan PDF dan menyimpannya ke dalam aliran file PDF baru:

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void SaveLayersToOutputStream(Stream outputStream)
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_Forms();
	
    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
    {
        // Get layers from the first page
        var layers = document.Pages[1].Layers;

        // Save each layer to the output stream
        foreach (var layer in layers)
        {
            layer.Save(outputStream);
        }
    }
}

Ratakan PDF bertingkat

Perpustakaan Aspose.PDF for .NET membuka PDF, mengiterasi melalui setiap lapisan di halaman pertama, dan meratakan setiap lapisan, menjadikannya permanen di halaman.

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

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
    {
        // Get the first page
        var page = document.Pages[1];

        // Flatten each layer on the page
        foreach (var layer in page.Layers)
        {
            layer.Flatten(true);
        }
    }
}

Metode ‘Layer.Flatten(bool cleanupContentStream)’ menerima parameter boolean yang menentukan apakah akan menghapus penanda grup konten opsional dari aliran konten. Mengatur parameter cleanupContentStream ke false mempercepat proses perataan.

Gabungkan Semua Lapisan di dalam PDF menjadi satu

Perpustakaan Aspose.PDF for .NET memungkinkan penggabungan semua lapisan PDF atau lapisan tertentu di halaman pertama menjadi lapisan baru dan menyimpan dokumen yang diperbarui.

Dua metode ditambahkan untuk menggabungkan semua lapisan di halaman:

  • void MergeLayers(string newLayerName).
  • void MergeLayers(string newLayerName, string newOptionalContentGroupId).

Parameter kedua memungkinkan penggantian nama penanda grup konten opsional. Nilai default adalah “oc1” (/OC /oc1 BDC).

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

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
    {
        // Get the first page
        var page = document.Pages[1];

        // Merge layers with a new layer name
        if (optionalLayerName != null)
        {
            page.MergeLayers(newLayerName, optionalLayerName);
        }
        else
        {
            page.MergeLayers(newLayerName);
        }

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