When you generate your document, you need to mark the render objects that you want to find later, somehow. Two good options are to use RenderObject.Name or RenderObject.UserData properties for that. Then when the document has been generated, you need to iterate through the document's Pages collection, for each page you need to go through the page's Fragments collection, and recurse over all fragments (each fragment contains the nested fragments in the Children collection). For each fragment, you need to check whether it's RenderObject.Name (or RenderObject.UserData) matches those you're interested in, and if so you may process that page somehow. It is really simpler than it sounds, attached is the sample I posted previously, but modified to allow to select certain "services" and preview the document formed by a subset of pages containing those services - there is very little extra code, just a few lines really. Hope this helps.