To add a PDF layer or OCG (optional content group) to a new document.
1PDFDoc doc = new PDFDoc();
2ElementBuilder builder = new ElementBuilder(); // ElementBuilder is used to build new Element objects
3ElementWriter writer = new ElementWriter(); // ElementWriter is used to write Elements to the page
4
5// Create a layer
6Group image_layer = Group.Create(doc, "Image Layer");
7Config cfg = Config.Create(doc, true);
8cfg.SetName("Default");
9
10// Add the new OCG to the list of layers that should appear in PDF viewer GUI.
11Obj layer_order_array = doc.CreateIndirectArray();
12cfg.SetOrder(layer_order_array);
13layer_order_array.PushBack(image_layer.GetSDFObj());
14
15// Start a new page
16Page page = doc.PageCreate();
17writer.Begin(page); // begin writing to this page
18
19// Add new content to the page and associate it with the layer.
20Image img = Image.Create(doc.GetSDFDoc(), imagename);
21img.GetSDFObj().Put("OC", image_layer.GetSDFObj());
22writer.WritePlacedElement(builder.CreateImage(img, 300, 600, 200, -150));
23writer.End(); // save changes to the current page
24doc.PagePushBack(page);
1PDFDoc doc;
2ElementBuilder builder; // ElementBuilder is used to build new Element objects
3ElementWriter writer; // ElementWriter is used to write Elements to the page
4
5// Create a layer
6OCG::Group image_layer = OCG::Group::Create(doc, "Image Layer");
7OCG::Config cfg = OCG::Config::Create(doc, true);
8cfg.SetName("Default");
9
10// Add the new OCG to the list of layers that should appear in PDF viewer GUI.
11Obj layer_order_array = doc.CreateIndirectArray();
12cfg.SetOrder(layer_order_array);
13layer_order_array.PushBack(image_layer.GetSDFObj());
14
15// Start a new page
16Page page = doc.PageCreate();
17writer.Begin(page); // Begin writing to the page
18
19// Add new content to the page and associate it with one of the layers.
20Image img = Image::Create(doc.GetSDFDoc(), imagename);
21img.GetSDFObj().Put("OC", image_layer.GetSDFObj());
22writer.WritePlacedElement(builder.CreateImage(img, 300, 600, 200, -150));
23writer.End(); // save changes to the current page
24doc.PagePushBack(page);
1doc := NewPDFDoc()
2
3builder := NewElementBuilder() // NewElementBuilder is used to build new Element objects
4writer := NewElementWriter() // NewElementWriter is used to write Elements to the page
5
6// Create a layer
7imageLayer := CreateLayer(doc, "Image Layer")
8cfg = ConfigCreate(doc, true)
9cfg.SetName("Default")
10
11// Start a new page
12page := doc.PageCreate()
13writer.Begin(page)
14
15// Add new content to the page and associate it with one of the layers.
16img := ImageCreate(doc.GetSDFDoc(), imagname)
17img.GetSDFObj().Put("OC", imageLayer.GetSDFObj())
18writer.WritePlacedElement(builder.CreateImage(img, 300.0, 600.0, 200.0, -150.0))
19writer.End() // save changes to the current page
20doc.PagePushBack(page)
1PDFDoc doc = new PDFDoc();
2ElementBuilder builder = new ElementBuilder(); // ElementBuilder is used to build new Element objects
3ElementWriter writer = new ElementWriter(); // ElementWriter is used to write Elements to the page
4
5// Create a layer
6Group image_layer = Group.create(doc, "Image Layer");
7Config cfg = Config.create(doc, true);
8cfg.setName("Default");
9
10// Add the new OCG to the list of layers that should appear in PDF viewer GUI.
11Obj layer_order_array = doc.createIndirectArray();
12cfg.setOrder(layer_order_array);
13layer_order_array.pushBack(image_layer.getSDFObj());
14
15// Start a new page
16Page page = doc.pageCreate();
17writer.begin(page); // Begin writing to the page
18
19// Add new content to the page and associate it with one of the layers.
20Image img = Image.create(doc.getSDFDoc(), imagename);
21img.GetSDFObj().Put("OC", image_layer.GetSDFObj());
22writer.writePlacedElement(builder.createImage(img, 300, 600, 200, -150));
23writer.end(); // save changes to the current page
24doc.pagePushBack(page);
1async function main() {
2 let doc = await PDFNet.PDFDoc.create();
3 const builder = await PDFNet.ElementBuilder.create();
4 const writer = await PDFNet.ElementWriter.create();
5
6 // Create a layer
7 const imageLayer = await PDFNet.OCG.create(doc, 'Image Layer');
8 const cfg = await PDFNet.OCGConfig.create(doc, true);
9 cfg.setName('Default');
10
11 // Add the new OCG to the list of layers that should appear in PDF viewer GUI.
12 let layerOrderArray = await doc.createIndirectArray();
13 cfg.setOrder(layerOrderArray);
14 layerOrderArray.pushBack(await image_layer.getSDFObj());
15
16 // Start a new page
17 const page = await doc.pageCreate();
18 writer.beginOnPage(page); // Begin writing to the page
19
20 // Add new content to the page and associate it with one of the layers.
21 const nullEncoderHints = new PDFNet.Obj('0');
22 const img = await PDFNet.Image.createFromURL(doc, imagename, nullEncoderHints);
23 const img_obj = await img.getSDFObj();
24 img_obj.put('OC', imageLayer);
25 writer.writePlacedElement(await builder.createImageScaled(img, 300, 600, 200, -150));
26 await writer.end(); // save changes to the current page
27 doc.pagePushBack(page);
28}
29PDFNet.runWithCleanup(main);
1PTPDFDoc *doc = [[PTPDFDoc alloc] init];
2PTElementBuilder *builder = [[PTElementBuilder alloc] init]; // ElementBuilder is used to build new Element objects
3PTElementWriter *writer= [[PTElementWriter alloc] init]; // ElementWriter is used to write Elements to the page
4
5// Create a layer
6PTGroup *image_layer = [PTGroup Create: doc name: @"Image Layer"];
7PTConfig *cfg = [PTConfig Create: doc default_config: YES];
8[cfg SetName: @"Default"];
9
10// Add the new OCG to the list of layers that should appear in PDF viewer GUI.
11PTObj *layer_order_array = [doc CreateIndirectArray];
12[cfg SetOrder: layer_order_array];
13[layer_order_array PushBack: [image_layer GetSDFObj]];
14
15// Start a new page
16PTPage *page = [doc PageCreate: [[PTPDFRect alloc] initWithX1: 0 y1: 0 x2: 612 y2:792]];
17[writer WriterBeginWithPage: page placement: e_ptoverlay page_coord_sys: YES compress: YES]; // Begin writing to the page
18
19// Add new content to the page and associate it with one of the layers.
20PTImage *img = [PTImage Create: [doc GetSDFDoc] filename: imagename];
21[[img GetSDFObj] Put: @"OC" obj: image_layer];
22[writer WritePlacedElement: [builder CreateImageWithCornerAndScale: img x: 300 y: 600 hscale: 200 vscale: -150]];
23[writer End]; // save changes to the current page
24[doc PagePushBack: page];
1$doc = new PDFDoc();
2$builder = new ElementBuilder(); // ElementBuilder is used to build new Element objects
3$writer = new ElementWriter; // ElementWriter is used to write Elements to the page
4
5// Create a layer
6$image_layer = Group::Create($doc, "Image Layer");
7$cfg = Config::Create($doc, true);
8$cfg->SetName("Default");
9
10// Add the new OCG to the list of layers that should appear in PDF viewer GUI.
11$layer_order_array = $doc->CreateIndirectArray();
12$cfg->SetOrder($layer_order_array);
13$layer_order_array->PushBack($image_layer->GetSDFObj());
14
15// Start a new page
16$page = $doc->PageCreate();
17$writer->Begin($page); // Begin writing to the page
18
19// Add new content to the page and associate it with one of the layers.
20$img = Image::Create($doc->GetSDFDoc(), $imagename);
21$img->GetSDFObj()->Put("OC", $image_layer);
22$writer->WritePlacedElement($builder->CreateImage($img, 300.0, 600.0, 200.0, -150.0));
23$writer->End(); // save changes to the current page
24$doc->PagePushBack($page);
1doc = PDFDoc()
2builder = ElementBuilder() # ElementBuilder is used to build new Element objects
3writer = ElementWriter() # ElementWriter is used to write Elements to the page
4
5# Create a layer
6image_layer = Group.Create(doc, "Image Layer")
7cfg = Config.Create(doc, True)
8cfg.SetName("Default")
9
10# Add the new OCG to the list of layers that should appear in PDF viewer GUI.
11layer_order_array = doc.CreateIndirectArray()
12cfg.SetOrder(layer_order_array)
13layer_order_array.PushBack(image_layer.GetSDFObj())
14
15# Start a new page
16page = doc.PageCreate()
17writer.Begin(page) # Begin writting to the page
18
19# Add new content to the page and associate it with one of the layers.
20img = Image.Create(doc.GetSDFDoc(), image_name)
21img.GetSDFObj().Put("OC", image_layer)
22writer.WritePlacedElement(builder.CreateImage(img, 300, 600, 200, -150))
23writer.End() # save changes to the current page
24doc.PagePushBack(page)
1doc = PDFDoc.new
2builder = ElementBuilder.new # ElementBuilder is used to build new Element objects
3writer = ElementWriter.new # ElementWriter is used to write Elements to the page
4
5# Create a layer
6image_layer = Group.Create(doc, "Image Layer")
7cfg = PDFNetRuby::Config.Create(doc, true)
8cfg.SetName("Default")
9
10# Add the new OCG to the list of layers that should appear in PDF viewer GUI.
11layer_order_array = doc.CreateIndirectArray
12cfg.SetOrder(layer_order_array)
13layer_order_array.PushBack(image_layer.GetSDFObj)
14
15# Start a new page
16page = doc.PageCreate
17writer.Begin(page) # Begin writting to the page
18
19# Add new content to the page and associate it with one of the layers.
20img = Image.Create(doc.GetSDFDoc, imagename)
21img.GetSDFObj().Put("OC", image_layer)
22writer.WritePlacedElement(builder.CreateImage(img, 300, 600, 200, -150))
23writer.End # save changes to the current page
24doc.PagePushBack(page)
1Dim doc As PDFDoc = New PDFDoc
2Dim builder As ElementBuilder = New ElementBuilder ' ElementBuilder is used to build new Element objects
3Dim writer As ElementWriter = New ElementWriter ' ElementWriter is used to write Elements to the page
4
5' Create a layer
6Dim image_layer As Group = Group.Create(doc, "Image Layer")
7Dim cfg As Config = Config.Create(doc, True)
8cfg.SetName("Default")
9
10' Add the new OCG to the list of layers that should appear in PDF viewer GUI.
11Dim layer_order_array As Obj = doc.CreateIndirectArray()
12cfg.SetOrder(layer_order_array)
13layer_order_array.PushBack(image_layer.GetSDFObj())
14
15' Start a new page
16Dim page As Page = doc.PageCreate()
17writer.Begin(page) ' begin writing to this page
18
19' Add new content to the page and associate it with one of the layers.
20Dim img As Image = Image.Create(doc.GetSDFDoc(), imagename)
21img.GetSDFObj().Put("OC", image_layer)
22writer.WritePlacedElement(builder.CreateImage(img, 300, 600, 200, -150))
23writer.End() ' save changes to the current page
24doc.PagePushBack(page)
PDF layers (OCG)
Full sample code which demonstrates how to create, extract, render PDF layers.
Did you find this helpful?
Trial setup questions?
Ask experts on DiscordNeed other help?
Contact SupportPricing or product questions?
Contact Sales