Skip to main content

Document.BookmarkNodes Property

Provides access to the collection of bookmarks available in the document and displayed in the Document Map of Print Preview.

Namespace: DevExpress.XtraPrinting

Assembly: DevExpress.Printing.v22.2.Core.dll

NuGet Packages: DevExpress.Printing.Core, DevExpress.Win.Dashboard.Design

Declaration

public IBookmarkNodeCollection BookmarkNodes { get; }

Property Value

Type Description
DevExpress.XtraPrinting.IBookmarkNodeCollection

A DevExpress.XtraPrinting.IBookmarkNodeCollection object, specifying the collection of bookmarks.

Example

This example illustrates how to make Print Preview display a Document Map listing all bookmarks assigned to a Document‘s elements.

The following code adds five bricks to the Detail section of a document and then assigns bookmarks to each brick.

Note that the Document Map button is automatically enabled in Print Preview when a displayed document has any bookmarks.

using System;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraPrinting;
using DevExpress.XtraPrinting.Native;
// ...
        private void button1_Click(object sender, EventArgs e) {
            // Create a new Printing System.
            PrintingSystem ps = new PrintingSystem();

            // Create a new link and add a handler to its CreateDetailArea event.
            Link link = new Link(ps);
            link.CreateDetailArea += new CreateAreaEventHandler(OnDocumentCreated);

            // Create a document for the link.
            link.CreateDocument();

            // Create a document's map.
            CreateDocumentMap(ps.Document);

            // Show the report's preview.
            link.ShowPreview();

            // Remove the handler for the CreateDetailArea event.
            link.CreateDetailArea -= new CreateAreaEventHandler(OnDocumentCreated);
        }

        private void OnDocumentCreated(object sender, CreateAreaEventArgs e) {
            // Draw 5 bricks on a document.
            for (int i = 0; i < 5; i++) {
                TextBrick brick = new TextBrick();
                brick.Text = "Item #" + (i + 1).ToString();
                brick.BackColor = Color.Yellow;
                brick.Rect = new Rectangle(10, i * 100, 100, 50);
                e.Graph.DrawBrick(brick, brick.Rect);
            }
        }

        private void CreateDocumentMap(Document document) {
            // Create a collection of 'Page and Brick' pairs.
            BrickPagePairCollection pairs = new BrickPagePairCollection();

            // Create an enumerator of all document bricks.
            DocumentBrickEnumerator en = new DocumentBrickEnumerator(document);

            // Add the 'Brick-Page' pairs for all document bricks.
            while (en.MoveNext()) {
                pairs.Add(BrickPagePair.Create(en.Brick, en.Page));
            }

            // Add bookmarks for all pairs to the document's map.
            foreach (BrickPagePair pair in pairs) {
                Page page = document.Pages[pair.PageIndex];

                Brick brick = page.GetBrickByIndices(pair.BrickIndices) as Brick;
                string BrickText = ((TextBrick)brick).Text;
                BookmarkNode mapNode = new BookmarkNode(BrickText, brick, page);
                document.BookmarkNodes.Add(mapNode);
            }
        }

The following code snippets (auto-collected from DevExpress Examples) contain references to the BookmarkNodes property.

Note

The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.

See Also