Índice
Instalado via NuGet
PM> Install-Package Spire.PDF
Links Relacionados
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.
- Adicionar camadas a um documento PDF em C# e VB.NET
- Definir visibilidade de camadas em um documento PDF em C# e VB.NET
- Excluir camadas em um documento PDF em C# e VB.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))); } } } }
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"); } } }
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); } } }
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.