The example demonstrates how to add layers with optional content using ByteScout PDF SDK.
Program.vb:
VB
'******************************************************************* ' ByteScout PDF SDK ' ' Copyright © 2016 Bytescout, https://bytescout.com ' ALL RIGHTS RESERVED ' '******************************************************************* Imports System.Drawing Imports Bytescout.PDF ''' <summary> ''' This example demonstrates how to add layers with optional content. ''' </summary> Class Program Shared Sub Main() ' Create new document Dim pdfDocument = New Document() pdfDocument.RegistrationName = "demo" pdfDocument.RegistrationKey = "demo" ' Add page Dim page = New Page(PaperFormat.A4) pdfDocument.Pages.Add(page) Dim canvas = page.Canvas ' Add main layer Dim allContents = New Layer("Main Layer") canvas.BeginMarkedContent(allContents) ' Add sub-layer Dim layer1 = New Layer("Square") canvas.BeginMarkedContent(layer1) canvas.DrawRectangle(New Bytescout.PDF.SolidBrush(New ColorRGB(0, 255, 0)), 20, 20, 100, 100) canvas.EndMarkedContent() ' Add second sub-layer Dim layer2 = New Layer("Circle") canvas.BeginMarkedContent(layer2) canvas.DrawCircle(New Bytescout.PDF.SolidBrush(New ColorRGB(255, 0, 0)), 70, 180, 50) canvas.EndMarkedContent() ' Add third sub-layer Dim layer3 = New Layer("Triangle") canvas.BeginMarkedContent(layer3) canvas.DrawPolygon(New Bytescout.PDF.SolidBrush(New ColorRGB(0, 0, 255)), New PointF() {New PointF(20, 340), New PointF(70, 240), New PointF(120, 340)}) canvas.EndMarkedContent() canvas.EndMarkedContent() pdfDocument.OptionalContents.Layers.Add(layer1) pdfDocument.OptionalContents.Layers.Add(layer2) pdfDocument.OptionalContents.Layers.Add(layer3) pdfDocument.OptionalContents.Layers.Add(allContents) ' Configure layers ' Group sub-layers Dim group = New OptionalContentGroup() group.Add(New OptionalContentGroupLayer(layer1)) group.Add(New OptionalContentGroupLayer(layer2)) group.Add(New OptionalContentGroupLayer(layer3)) ' Order sub-layers pdfDocument.OptionalContents.Configuration.Order.Add(New OptionalContentGroupLayer(allContents)) pdfDocument.OptionalContents.Configuration.Order.Add(group) ' Make the third layer invisible by default (for example) pdfDocument.OptionalContents.Configuration.OFF.Add(layer3) ' Force the PDF viewer to show the layers panel initially pdfDocument.PageMode = PageMode.OptionalContent ' Save document to file pdfDocument.Save("result.pdf") ' Cleanup pdfDocument.Dispose() ' Open document in default PDF viewer app Process.Start("result.pdf") End Sub End Class
Program.cs:
C#
//******************************************************************* // ByteScout PDF SDK // // Copyright © 2016 ByteScout - https://bytescout.com // ALL RIGHTS RESERVED // //******************************************************************* using System.Diagnostics; using System.Drawing; using Bytescout.PDF; using SolidBrush = Bytescout.PDF.SolidBrush; namespace Layers { /// <summary> /// This example demonstrates how to add layers with optional content. /// </summary> class Program { static void Main() { // Create new document Document pdfDocument = new Document(); pdfDocument.RegistrationName = "demo"; pdfDocument.RegistrationKey = "demo"; // Add page Page page = new Page(PaperFormat.A4); pdfDocument.Pages.Add(page); Canvas canvas = page.Canvas; // Add main layer Layer allContents = new Layer("Main Layer"); canvas.BeginMarkedContent(allContents); // Add sub-layer Layer layer1 = new Layer("Square"); canvas.BeginMarkedContent(layer1); canvas.DrawRectangle(new SolidBrush(new ColorRGB(0, 255, 0)), 20, 20, 100, 100); canvas.EndMarkedContent(); // Add second sub-layer Layer layer2 = new Layer("Circle"); canvas.BeginMarkedContent(layer2); canvas.DrawCircle(new SolidBrush(new ColorRGB(255, 0, 0)), 70, 180, 50); canvas.EndMarkedContent(); // Add third sub-layer Layer layer3 = new Layer("Triangle"); canvas.BeginMarkedContent(layer3); canvas.DrawPolygon(new SolidBrush(new ColorRGB(0, 0, 255)), new PointF[] { new PointF(20, 340), new PointF(70, 240), new PointF(120, 340) }); canvas.EndMarkedContent(); canvas.EndMarkedContent(); pdfDocument.OptionalContents.Layers.Add(layer1); pdfDocument.OptionalContents.Layers.Add(layer2); pdfDocument.OptionalContents.Layers.Add(layer3); pdfDocument.OptionalContents.Layers.Add(allContents); // Configure layers // Group sub-layers OptionalContentGroup group = new OptionalContentGroup(); group.Add(new OptionalContentGroupLayer(layer1)); group.Add(new OptionalContentGroupLayer(layer2)); group.Add(new OptionalContentGroupLayer(layer3)); // Order sub-layers pdfDocument.OptionalContents.Configuration.Order.Add(new OptionalContentGroupLayer(allContents)); pdfDocument.OptionalContents.Configuration.Order.Add(group); // Make the third layer invisible by default (for example) pdfDocument.OptionalContents.Configuration.OFF.Add(layer3); // Force the PDF viewer to show the layers panel initially pdfDocument.PageMode = PageMode.OptionalContent; // Save document to file pdfDocument.Save("result.pdf"); // Cleanup pdfDocument.Dispose(); // Open document in default PDF viewer app Process.Start("result.pdf"); } } }