C#/VB.NET: Adicionar, ocultar ou excluir camadas em PDF

2023-08-18 02:33:11

Camada PDF é um recurso que organiza o conteúdo de um arquivo PDF em camadas, o que permite aos usuários definir seletivamente alguns conteúdos para serem visíveis e outros para serem invisíveis no mesmo arquivo PDF. As camadas de PDF são um elemento comum usado em ilustrações em camadas, mapas e desenhos CAD. Este artigo demonstrará como programaticamente adicionar, ocultar ou excluir camadas em um arquivo PDF usando Spire.PDF for .NET.

Instalar o Spire.PDF for .NET

Para começar, você precisa adicionar os arquivos DLL incluídos no pacote Spire.PDF for.NET como referências em seu projeto .NET. Os arquivos DLLs podem ser baixados deste link ou instalados via NuGet.

PM> Install-Package Spire.PDF

Adicionar camadas a um documento PDF em C# e VB.NET

O Spire.PDF for .NET fornece o método PdfDocument.Layers.AddLayer() para adicionar uma camada em um documento PDF e você pode desenhar texto, linhas, imagens ou formas na camada PDF. As etapas detalhadas são as seguintes.

  • Crie uma instância PdfDocument.
  • Carregue um arquivo PDF de amostra usando o método PdfDocument.LoadFromFile().
  • Adicione uma camada com o nome especificado no PDF usando o método PdfDocument.Layers.AddLayer(String). Ou você também pode definir a visibilidade da camada ao adicioná-la usando o método PdfDocument.Layers.AddLayer(String, PdfVisibility).
  • Crie uma tela para a camada usando o método PdfLayer.CreateGraphics().
  • Desenhe texto, imagem ou outros elementos na tela.
  • Salve o documento resultante usando o 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

Definir visibilidade de camadas em um documento PDF em C# e VB.NET

Para definir a visibilidade de uma camada existente, você precisará obter uma camada especificada por seu índice ou nome usando a propriedade PdfDocument.Layers e, em seguida, mostrar ou ocultar a camada usando a propriedade PdfLayer.Visibility.As etapas detalhadas são as seguintes.

  • Crie uma instância PdfDocument.
  • Carregue um documento PDF de amostra usando o método PdfDocument.LoadFromFile().
  • Defina a visibilidade de uma camada especificada usando a propriedade PdfDocument.Layers.Visibility.
  • Salve o documento resultante usando o 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

Excluir camadas em um documento PDF em C# e VB.NET

Spire.PDF for .NET também permite que você remova uma camada existente por seu nome usando o método PdfDocument.Layers.RemoveLayer(String). Mas observe que os nomes das camadas PDF podem não ser exclusivos e este método removerá todas as camadas PDF com o mesmo nome. As etapas detalhadas são as seguintes.

  • Crie uma instância PdfDocument.
  • Carregue um documento PDF de amostra usando o método PdfDocument.LoadFromFile().
  • Exclua uma camada especificada por seu nome usando o método PdfDocument.Layers.RemoveLayer(String).
  • Salve o documento resultante usando o 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 uma licença temporária

Se você deseja remover a mensagem de avaliação dos documentos gerados ou se livrar das limitações de função, por favor solicite uma licença de avaliação de 30 dias para você mesmo.

Veja também