Some test text!

Search
Hamburger Icon

Ruby / Guides / Extract layer

Extract layers from PDF in Ruby

To extract PDF layers or OCG (optional content group) from a document.

doc = PDFDoc.new($filename)
page = doc.GetPage(1)

init_cfg = doc.GetOCGConfig
ctx = Context.new(init_cfg)

pdfdraw = PDFDraw.new
pdfdraw.SetImageSize(1000, 1000)
pdfdraw.SetOCGContext(ctx)  # Render the page using the given OCG context.

# Disable drawing of content that is not optional (i.e. is not part of any layer).
ctx.SetNonOCDrawing(false)

# Now render each layer in the input document to a separate image.
ocgs = doc.GetOCGs	# Get the array of all OCGs in the document.
sz = ocgs.Size
i = 0
while i < sz do
    ocg = Group.new(ocgs.GetAt(i))
    ctx.ResetStates(false)
    ctx.SetState(ocg, true)
    fname = "pdf_layers_" + ocg.GetName + ".png"
    pdfdraw.Export(page, $output_path + fname)
    i = i + 1
end

# Now draw content that is not part of any layer...
ctx.SetNonOCDrawing(true)
ctx.SetOCDrawMode(Context::E_NoOC)
pdfdraw.Export(page, $output_path + "pdf_layers_non_oc.png")

PDF layers (OCG)
Full sample code which demonstrates how to create, extract, render PDF layers.

Get the answers you need: Chat with us