C#/VB.NET : ajouter, masquer ou supprimer des calques dans un PDF

2023-08-18 02:25:51

La couche PDF est une fonctionnalité qui organise le contenu d'un fichier PDF en couches, ce qui permet aux utilisateurs de définir de manière sélective certains contenus pour qu'ils soient visibles et d'autres pour qu'ils soient invisibles dans le même fichier PDF. Les couches PDF sont un élément couramment utilisé dans les illustrations en couches, les cartes et les dessins CAO. Cet article vous montrera comment programmer ajouter, masquer ou supprimer des calques dans un fichier PDF en utilisant Spire.PDF for .NET.

Installer Spire.PDF for .NET

Pour commencer, vous devez ajouter les fichiers DLL inclus dans le package Spire.PDF for .NET en tant que références dans votre projet .NET. Les fichiers DLL peuvent être téléchargés à partir de ce lien ou installés via NuGet.

PM> Install-Package Spire.PDF

Ajouter des calques à un document PDF en C# et VB.NET

Spire.PDF for .NET fournit la méthode PdfDocument.Layers.AddLayer() pour ajouter un calque dans un document PDF, et vous pouvez ensuite dessiner du texte, des lignes, des images ou des formes sur le calque PDF. Les étapes détaillées sont les suivantes.

  • Créez une instance PdfDocument.
  • Chargez un exemple de fichier PDF à l'aide de la méthode PdfDocument.LoadFromFile().
  • Ajoutez un calque avec le nom spécifié dans le PDF à l'aide de la méthode PdfDocument.Layers.AddLayer(String). Ou vous pouvez également définir la visibilité du calque lors de son ajout à l'aide de la méthode PdfDocument.Layers.AddLayer(String, PdfVisibility).
  • Créez un canevas pour le calque à l'aide de la méthode PdfLayer.CreateGraphics().
  • Dessinez du texte, une image ou d'autres éléments sur la toile.
  • Enregistrez le document de résultat à l'aide de la méthode 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

Définir la visibilité des calques dans un document PDF en C# et VB.NET

Pour définir la visibilité d'un calque existant, vous devez obtenir un calque spécifié par son index ou son nom à l'aide de la propriété PdfDocument.Layers, puis afficher ou masquer le calque à l'aide de la propriété PdfLayer.Visibility. Les étapes détaillées sont les suivantes.

  • Créez une instance PdfDocument.
  • Chargez un exemple de document PDF à l'aide de la méthode PdfDocument.LoadFromFile().
  • Définissez la visibilité d'un calque spécifié à l'aide de la propriété PdfDocument.Layers.Visibility.
  • Enregistrez le document de résultat à l'aide de la méthode 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

Supprimer des calques dans un document PDF en C# et VB.NET

Spire.PDF for .NET vous permet également de supprimer une couche existante par son nom à l'aide de la méthode PdfDocument.Layers.RemoveLayer(String). Mais veuillez noter que les noms des calques PDF peuvent ne pas être uniques et cette méthode supprimera tous les calques PDF portant le même nom. Les étapes détaillées sont les suivantes.

  • Créez une instance PdfDocument.
  • Chargez un exemple de document PDF à l'aide de la méthode PdfDocument.LoadFromFile().
  • Supprimez un calque spécifié par son nom à l'aide de la méthode PdfDocument.Layers.RemoveLayer(String).
  • Enregistrez le document de résultat à l'aide de la méthode 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

Demander une licence temporaire

Si vous souhaitez supprimer le message d'évaluation des documents générés ou vous débarrasser des limitations de la fonction, veuillez demander une licence d'essai de 30 jours pour toi.

Voir également