Manages the annotations support in this document viewer.
public DocumentViewerAnnotations Annotations { get; }
The DocumentViewerAnnotations object that manages the annotations support in this document viewer.
This class manages the automation support of the annotation containers in the LEADDocument set in the document viewer. The annotations are obtained from the document using DocumentPage.GetAnnotations.
Refer to DocumentViewerAnnotations for more information.
using Leadtools;using Leadtools.Controls;using Leadtools.Document;using Leadtools.Document.Viewer;using Leadtools.Document.Converter;using Leadtools.Codecs;using Leadtools.Caching;using Leadtools.Annotations.Engine;using Leadtools.Annotations.Automation;using Leadtools.Annotations.WinForms;using Leadtools.Annotations.Designers;using Leadtools.Document.Writer;using Leadtools.Ocr;public void DocumentViewerWithAnnotations_Example(){// New Form to be used as our applicationvar form = new MyForm();form.ShowDialog();}class MyForm : Form{public MyForm(){this.Size = new Size(800, 800);this.Text = "LEADTOOLS Document Viewer Example";}protected override void OnLoad(EventArgs e){if (!DesignMode)Init();base.OnLoad(e);}// Our document viewer instanceprivate DocumentViewer _documentViewer;private void Init(){// Initialize the user interfaceInitUI();// Init the cache. This is optional, but it can speed up viewing of large documents// if not needed, remove this sectionDocumentFactory.Cache = new FileCache();// Init the document viewer, pass along the panelsvar createOptions = new DocumentViewerCreateOptions{// The middle panel for the viewViewContainer = this.Controls.Find("middlePanel", false)[0],// The left panel for the thumbnailsThumbnailsContainer = this.Controls.Find("leftPanel", false)[0],// Using annotations in this exampleUseAnnotations = true};// Create the document viewer_documentViewer = DocumentViewerFactory.CreateDocumentViewer(createOptions);// We prefer SVG viewing_documentViewer.View.PreferredItemType = DocumentViewerItemType.Svg;// Initalize the annotationsInitAnnotations();// Load a documentvar fileName = @"C:\LEADTOOLS22\Resources\Images\Leadtools.pdf";var document = DocumentFactory.LoadFromFile(fileName,new LoadDocumentOptions { UseCache = DocumentFactory.Cache != null });// Set it in the viewer_documentViewer.SetDocument(document);// Run pan/zoomvar interactiveComboBox = this.Controls.Find("interactiveComboBox", true)[0] as ComboBox;interactiveComboBox.SelectedItem = DocumentViewerCommands.InteractivePanZoom;}private void InitAnnotations(){// The annotations toolbar will be added herevar rightPanel = this.Controls.Find("rightPanel", true)[0];// Get the automation manager from the document viewervar automationManager = _documentViewer.Annotations.AutomationManager;// Create the manager helper. This sets the rendering enginevar automationManagerHelper = new AutomationManagerHelper(automationManager);// Tell the document viewer that automation manager helper is created_documentViewer.Annotations.Initialize();// Craete the toolbarautomationManagerHelper.ModifyToolBarParentVisiblity = true;automationManagerHelper.CreateToolBar();var toolBar = automationManagerHelper.ToolBar;toolBar.Dock = DockStyle.Fill;toolBar.AutoSize = true;toolBar.BorderStyle = BorderStyle.None;toolBar.Appearance = ToolBarAppearance.Flat;rightPanel.Controls.Add(toolBar);toolBar.BringToFront();// Handler for showing the context menu when the user right clicks on an annotation objectEventHandler<AnnAutomationEventArgs> onShowContextMenu = (sender, e) =>{// Get the object typevar automationObject = e.Object as AnnAutomationObject;if (automationObject == null)return;// Convert the point to client coordinatesvar imageViewer = _documentViewer.View.ImageViewer;var position = imageViewer.PointToClient(Cursor.Position);var automation = _documentViewer.Annotations.Automation;// Show its context menuvar contextMenu = automationObject.ContextMenu as ObjectContextMenu;if (contextMenu != null){contextMenu.Automation = automation;contextMenu.Show(imageViewer, position);}};// Handler for show the object properties dialogEventHandler<AnnAutomationEventArgs> onShowObjectProperties = (sender, e) =>{// Get the automation object from the document viewerusing (var dlg = new AutomationUpdateObjectDialog()){dlg.UserName = _documentViewer.UserName;dlg.Automation = sender as AnnAutomation;dlg.ShowDialog(this);e.Cancel = !dlg.IsModified;}};// Handle extra annotations using the Operation event_documentViewer.Operation += (sender, e) =>{switch (e.Operation){case DocumentViewerOperation.LoadingAnnotations:// Disable the panel where we put the toolbar when we are loading, enable when we are donerightPanel.Enabled = e.IsPostOperation;break;case DocumentViewerOperation.CreateAutomation:if (e.IsPostOperation){// Automation object has been created, use it to perform any extra task not handled by the// document viewer by default// We will handle showing the context menu when the user right clicks on an object and when they// select properties_documentViewer.Annotations.Automation.OnShowContextMenu += onShowContextMenu;_documentViewer.Annotations.Automation.OnShowObjectProperties += onShowObjectProperties;}break;case DocumentViewerOperation.DestroyAutomation:if (!e.IsPostOperation){// Automation is about to be destroyed, remove any events we used_documentViewer.Annotations.Automation.OnShowContextMenu -= onShowContextMenu;_documentViewer.Annotations.Automation.OnShowObjectProperties -= onShowObjectProperties;}break;default:break;}};}private void InitUI(){// Add a panel on the left for the document viewer thumbnails partvar leftPanel = new Panel();leftPanel.Name = "leftPanel";leftPanel.Width = 200;leftPanel.Dock = DockStyle.Left;leftPanel.BackColor = Color.Gray;leftPanel.BorderStyle = BorderStyle.FixedSingle;this.Controls.Add(leftPanel);// Add a panel to the right, this will work for the bookmarks or annotations partvar rightPanel = new Panel();rightPanel.Name = "rightPanel";rightPanel.Width = 200;rightPanel.Dock = DockStyle.Right;rightPanel.BackColor = Color.LightBlue;rightPanel.BorderStyle = BorderStyle.FixedSingle;this.Controls.Add(rightPanel);// Add a panel to fill the rest, for the document viewervar middlePanel = new Panel();middlePanel.Name = "middlePanel";middlePanel.BackColor = Color.DarkGray;middlePanel.BorderStyle = BorderStyle.None;middlePanel.Dock = DockStyle.Fill;this.Controls.Add(middlePanel);// Add a top panel to host our application controlsvar topPanel = new Panel();topPanel.Name = "topPanel";topPanel.Height = 100;topPanel.Dock = DockStyle.Top;topPanel.BorderStyle = BorderStyle.FixedSingle;this.Controls.Add(topPanel);middlePanel.BringToFront();// Add buttons for the UI// Combo box for interactive modesvar interactiveComboBox = new ComboBox();interactiveComboBox.Name = "interactiveComboBox";interactiveComboBox.DropDownStyle = ComboBoxStyle.DropDownList;// The command names for the items so we can just run theminteractiveComboBox.Items.Add(DocumentViewerCommands.InteractivePanZoom);interactiveComboBox.Items.Add(DocumentViewerCommands.InteractiveSelectText);interactiveComboBox.SelectedIndexChanged += (sender, e) =>{var commandName = interactiveComboBox.SelectedItem as string;_documentViewer.Commands.Run(commandName);};topPanel.Controls.Add(interactiveComboBox);// Generic label for information used by the examplesvar infoLabel = new Label();infoLabel.Name = "infoLabel";infoLabel.Text = "Info...";infoLabel.AutoSize = false;infoLabel.Width = 400;infoLabel.Left = interactiveComboBox.Right + 20;topPanel.Controls.Add(infoLabel);var exampleButton = new Button();exampleButton.Top = interactiveComboBox.Bottom + 2;exampleButton.Name = "exampleButton";exampleButton.Text = "&Example";exampleButton.Click += (sender, e) => Example(exampleButton);topPanel.Controls.Add(exampleButton);}private void Example(Button exampleButton){// Add the example code hereConsole.WriteLine(this + " Ready");}