How to add layers with optional content using ByteScout PDF SDK - ByteScout
Announcement
Our ByteScout SDK products are sunsetting as we focus on expanding new solutions.
Learn More Open modal
Close modal
Announcement Important Update
ByteScout SDK Sunsetting Notice
Our ByteScout SDK products are sunsetting as we focus on our new & improved solutions. Thank you for being part of our journey, and we look forward to supporting you in this next chapter!

How to add layers with optional content using ByteScout PDF SDK

  • Home
  • /
  • Articles
  • /
  • How to add layers with optional content using ByteScout PDF SDK

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");
		}
	}
} 

Tutorials:

prev
next