C#/VB.NET: agregar, ocultar o eliminar capas en PDF

2023-08-18 02:29:51

La capa de PDF es una función que organiza el contenido de un archivo PDF en capas, lo que permite a los usuarios configurar selectivamente algunos contenidos para que sean visibles y otros para que sean invisibles en el mismo archivo PDF. Las capas de PDF son un elemento común utilizado en ilustraciones en capas, mapas y dibujos CAD. Este artículo demostrará cómo programáticamente agregar, ocultar o eliminar capas en un archivo PDF utilizando Spire.PDF for .NET.

Instalar Spire.PDF for .NET

Para empezar, debe agregar los archivos DLL incluidos en el paquete Spire.PDF for .NET como referencias en su proyecto .NET. Los archivos DLL se pueden descargar desde este enlace o instalar a través de NuGet.

PM> Install-Package Spire.PDF

Agregar capas a un documento PDF en C# y VB.NET

Spire.PDF for .NET proporciona el método PdfDocument.Layers.AddLayer() para agregar una capa en un documento PDF y luego puede dibujar texto, líneas, imágenes o formas en la capa PDF. Los pasos detallados son los siguientes.

  • Cree una instancia de PdfDocument.
  • Cargue un archivo PDF de muestra usando el método PdfDocument.LoadFromFile().
  • Agregue una capa con el nombre especificado en el PDF usando el método PdfDocument.Layers.AddLayer(String) O también puede establecer la visibilidad de la capa mientras la agrega usando el método PdfDocument.Layers.AddLayer(String, PdfVisibility).
  • Cree un lienzo para la capa usando el método PdfLayer.CreateGraphics().
  • Dibuja texto, imagen u otros elementos en el lienzo.
  • Guarde el documento de resultados utilizando el método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Graphics.Layer;
    using System.Drawing;
    
    namespace AddLayersToPdf
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument instance and load a sample PDF file
                PdfDocument pdf = new PdfDocument();
                pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\Sample.pdf");
    
                //Invoke AddLayerWatermark method to add a watermark layer
                AddLayerWatermark(pdf);
    
                //Invoke AddLayerHeader method to add a header layer
                AddLayerHeader(pdf);
    
                //Save to file
                pdf.SaveToFile("AddLayers.pdf");
                pdf.Close();
            }
    
            private static void AddLayerWatermark(PdfDocument doc)
            {
                //Create a layer named "Watermark"
                PdfLayer layer = doc.Layers.AddLayer("Watermark");
    
                //Create a font
                PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 48), true);
    
                //Specify the watermark text
                string watermarkText = "CONFIDENTIAL";
    
                //Get text size
                SizeF fontSize = font.MeasureString(watermarkText);
    
                //Calculate two offsets
                float offset1 = (float)(fontSize.Width * System.Math.Sqrt(2) / 4);
                float offset2 = (float)(fontSize.Height * System.Math.Sqrt(2) / 4);
    
                //Get page count
                int pageCount = doc.Pages.Count;
    
                //Declare two variables
                PdfPageBase page;
                PdfCanvas canvas;
    
                //Loop through the pages
                for (int i = 0; (i < pageCount); i++)
                {
                    page = doc.Pages[i];
    
                    //Create a canvas from layer
                    canvas = layer.CreateGraphics(page.Canvas);
                    canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);
                    canvas.SetTransparency(0.4f);
                    canvas.RotateTransform(-45);
    
                    //Draw sting on the canvas of layer
                    canvas.DrawString(watermarkText, font, PdfBrushes.DarkBlue, 0, 0);
                }
            }
            private static void AddLayerHeader(PdfDocument doc)
            {
                // Create a layer named "Header"
                PdfLayer layer = doc.Layers.AddLayer("Header");
    
                //Get page size
                SizeF size = doc.Pages[0].Size;
    
                //Specify the initial values of X and y
                float x = 90;
                float y = 40;
    
                //Get page count
                int pageCount = doc.Pages.Count;
    
                //Declare two variables
                PdfPageBase page;
                PdfCanvas canvas;
    
                //Loop through the pages
                for (int i = 0; (i < pageCount); i++)
                {
                    //Draw an image on the layer
                    PdfImage pdfImage = PdfImage.FromFile(@"C:\Users\Administrator\Desktop\img.jpg");
                    float width = pdfImage.Width;
                    float height = pdfImage.Height;
                    page = doc.Pages[i];
                    canvas = layer.CreateGraphics(page.Canvas);
                    canvas.DrawImage(pdfImage, x, y, width, height);
    
                    //Draw a line on the layer
                    PdfPen pen = new PdfPen(PdfBrushes.DarkGray, 2);
                    canvas.DrawLine(pen, x, (y + (height + 5)), (size.Width - x), (y + (height + 2)));
                }
            }
        }
    } 

C#/VB.NET: Add, Hide or Delete Layers in PDF

Establecer la visibilidad de las capas en un documento PDF en C# y VB.NET

Para establecer la visibilidad de una capa existente, deberá obtener una capa específica por su índice o nombre mediante la propiedad PdfDocument.Layers y, a continuación, mostrar u ocultar la capa mediante la propiedad PdfLayer.Visibility. Los pasos detallados son los siguientes.

  • Cree una instancia de PdfDocument.
  • Cargue un documento PDF de muestra utilizando el método PdfDocument.LoadFromFile().
  • Establezca la visibilidad de una capa específica usando la propiedad PdfDocument.Layers.Visibility.
  • Guarde el documento de resultados utilizando el método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Graphics.Layer;
    
    namespace HideLayer
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument instance
                PdfDocument pdf = new PdfDocument();
    
                //Load a sample PDF document
                pdf.LoadFromFile("AddLayers.pdf");
    
                //Hide a specified layer by index
                pdf.Layers[0].Visibility = PdfVisibility.Off;
    
                //Hide a specified layer by name
                //pdf.Layers["Watermark"].Visibility = PdfVisibility.Off;
    
                //Save the result document
                pdf.SaveToFile("HideLayer.pdf");
            }
        }
    }

C#/VB.NET: Add, Hide or Delete Layers in PDF

Eliminar capas en un documento PDF en C# y VB.NET

Spire.PDF for .NET también le permite eliminar una capa existente por su nombre usando el método PdfDocument.Layers.RemoveLayer(String).Pero tenga en cuenta que los nombres de las capas PDF pueden no ser únicos y este método eliminará todas las capas PDF con mismo nombre Los pasos detallados son los siguientes.

  • Cree una instancia de PdfDocument.
  • Cargue un documento PDF de muestra utilizando el método PdfDocument.LoadFromFile().
  • Elimine una capa específica por su nombre usando el método PdfDocument.Layers.RemoveLayer(String).
  • Guarde el documento de resultados utilizando el método PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
    
    namespace DeleteLayer
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument instance
                PdfDocument pdf = new PdfDocument();
    
                //Load a sample PDF document
                pdf.LoadFromFile("AddLayers.pdf");
    
                //Remove a layer by name
                pdf.Layers.RemoveLayer(("Watermark"));
    
                //Save the result document
                pdf.SaveToFile("DeleteLayer.pdf", FileFormat.PDF);
            }
        }
    }

C#/VB.NET: Add, Hide or Delete Layers in PDF

Solicitar una Licencia Temporal

Si desea eliminar el mensaje de evaluación de los documentos generados o deshacerse de las limitaciones de la función, por favor solicitar una licencia de prueba de 30 días para ti.

Ver también