Tabla de contenido
Instalado a través de NuGet
PM> Install-Package Spire.PDF
enlaces relacionados
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.
- Agregar capas a un documento PDF en C# y VB.NET
- Establecer la visibilidad de las capas en un documento PDF en C# y VB.NET
- Eliminar capas en un documento PDF en C# y VB.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)));
}
}
}
}

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");
}
}
}

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);
}
}
}

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.