Оглавление
Установлено через NuGet
PM> Install-Package Spire.PDF
Ссылки по теме
Слой PDF — это функция, которая упорядочивает содержимое файла PDF по слоям, что позволяет пользователям выборочно устанавливать отображение одного содержимого в одном и том же файле PDF, а другое — невидимым. Слои PDF — это распространенный элемент, используемый в многоуровневых графических объектах, картах и чертежах САПР. В этой статье будет показано, как программно добавлять, скрывать или удалять слои в файле PDF используя Spire.PDF for .NET.
- Добавление слоев в документ PDF на C# и VB.NET
- Установите видимость слоев в документе PDF в C# и VB.NET
- Удалить слои в документе PDF в C# и VB.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)));
}
}
}
}

Установите видимость слоев в документе 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");
}
}
}

Удалить слои в документе 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);
}
}
}

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