Категория

C#/VB.NET: добавление, скрытие или удаление слоев в PDF

2023-08-18 02:32:25 zaki zou

Слой PDF — это функция, которая упорядочивает содержимое файла PDF по слоям, что позволяет пользователям выборочно устанавливать отображение одного содержимого в одном и том же файле PDF, а другое — невидимым. Слои PDF — это распространенный элемент, используемый в многоуровневых графических объектах, картах и чертежах САПР. В этой статье будет показано, как программно добавлять, скрывать или удалять слои в файле PDF используя Spire.PDF for .NET.

Установите Spire.PDF for .NET

Для начала вам нужно добавить файлы DLL, включенные в пакет Spire.PDF for .NET, в качестве ссылок в ваш проект .NET. Файлы DLL можно загрузить по этой ссылке или установить через NuGet.

PM> Install-Package Spire.PDF

Добавление слоев в документ PDF на C# и VB.NET

Spire.PDF for .NET предоставляет метод PdfDocument.Layers.AddLayer() для добавления слоя в документ PDF, после чего вы можете рисовать текст, линии, изображения или фигуры на слое PDF. Подробные шаги следующие.

  • Создайте экземпляр PdfDocument.
  • Загрузите образец PDF-файла с помощью метода PdfDocument.LoadFromFile().
  • Добавьте слой с указанным именем в PDF, используя метод PdfDocument.Layers.AddLayer(String). Или вы также можете установить видимость слоя при его добавлении с помощью метода PdfDocument.Layers.AddLayer(String, PdfVisibility).
  • Создайте холст для слоя, используя метод PdfLayer.CreateGraphics().
  • Нарисуйте текст, изображение или другие элементы на холсте.
  • Сохраните результирующий документ с помощью метода 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

Установите видимость слоев в документе PDF в C# и VB.NET

Чтобы установить видимость существующего слоя, вам нужно получить указанный слой по его индексу или имени с помощью свойства PdfDocument.Layers, а затем показать или скрыть слой с помощью свойства PdfLayer.Visibility. Подробные шаги следующие.

  • Создайте экземпляр PdfDocument.
  • Загрузите образец PDF-документа с помощью метода PdfDocument.LoadFromFile().
  • Установите видимость указанного слоя с помощью свойства PdfDocument.Layers.Visibility.
  • Сохраните результирующий документ с помощью метода 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

Удалить слои в документе PDF в C# и VB.NET

Spire.PDF for .NET также позволяет удалить существующий слой по его имени с помощью метода PdfDocument.Layers.RemoveLayer(String). Но учтите, что имена слоев PDF могут не быть уникальными, и этот метод удалит все слои PDF с одинаковыми именами. Подробные шаги следующие.

  • Создайте экземпляр PdfDocument.
  • Загрузите образец PDF-документа с помощью метода PdfDocument.LoadFromFile().
  • Удалить указанный слой по его имени с помощью метода PdfDocument.Layers.RemoveLayer(String).
  • Сохраните результирующий документ с помощью метода 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

Подать заявку на временную лицензию

Если вы хотите удалить оценочное сообщение из сгенерированных документов или избавиться от функциональных ограничений, пожалуйста запросить 30-дневную пробную лицензию для себя.

Смотрите также