Layers or as they are more formally known Optional Content Groups (OCG) is representing a collection of graphics that can be made visible or invisible dynamically by users of viewer applications. (This capability is useful in items such as CAD drawings, maps, and multi-language documents) With the introduction of PDF version 1.5 came the concept of Layers. Form and image and annotations can be made optional too.
A group is assigned a state, which is either ON or OFF. States can be set programmatically or through the viewer user interface to change the visibility of content. In the typical case, content belonging to a group is visible when the group is ON and invisible when it is OFF. When a piece of optional content in a PDF file is determined to be hidden, the content is not drawn.
You may see all layers in PDF document on Layers tab. (for Adobe Reader) Go into the “View” menu and select “Navigation Tabs” and then choose “Layers”.
So this gives us an instruction on how to create Layered PDFs within PDF Creator Pilot. In our example we’ve created a PDF with several layers. (example for VBScript)
' create pdf library object Set PDF = CreateObject("PDFCreatorPilot.PDFDocument4") ' initialize PDF Engine PDF.SetLicenseData "demo@demo", "demo" ' set document title PDF.SetTitle "PDF with Layers", 1 ' For creating PDF with layers, we need create named content group. For every layer – ' individual group: groupIndex = PDF.CreateContentGroup("Text Optional Content Group") ' Then you need to add content in layer. Sections of content in the PDF document can be made ' optional by enclosing between the marked-content operators BeginMarkedContent and ' EndMarkedContent. Between this operators you may draw graphic shapes, images, forms, ' annotations or text: ' Text content group example: PDF.BeginMarkedContent groupIndex PDF.ShowTextAt 10, 40, "Hello, optional content group!" PDF.EndMarkedContent ' Image content group example: img = PDF.AddImageFromFile(L"image.jpg") PDF.BeginMarkedContent groupIndex PDF.ShowImage img, 150, 100 PDF.EndMarkedContent ' Annotation content group example: PDF.BeginMarkedContent groupIndex PDF.AddUnicodeTextAnnotation 10, 10, "Title", "Some text goes here..." PDF.EndMarkedContent ' You may combine content of this group. For example, PDF.BeginMarkedContent groupIndex PDF.ShowTextAt 10, 40, "Hello, optional content group!" PDF.AddEditBox 50, 210, 150, 250, "edt1" PDF.SetColor 0.0, 0.9f, 0.0, 0.0 PDF.ResetPath PDF.DrawEllipse 100, 200, 200, 300 PDF.FillAndStroke PDF.EndMarkedContent ' finalize document generation PDF.SaveToFile "PdfWithContentGroups.pdf", true ' disconnect from library Set PDF = Nothing
Hopefully from the example code and the example PDFs you should see how useful Layers can be.
Artem Golubnichenko