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.