←Select platform

SetDocument Method

Summary

Sets a new document in the viewer.

Syntax
C#
C++/CLI
public virtual void SetDocument( 
   LEADDocument document 
) 
public:  
   virtual void SetDocument( 
      LEADDocument^ document 
   ) 

Parameters

document

Document object to view. Use null to remove the current document from the viewer.

Remarks

If the value of document is null, then the current document is removed from the viewer.

If the viewer has a previous LEADDocument object set and this method was sucessful, then the existing LEADDocument object will be disposed if the value of AutoDisposeDocument is true.

The viewer will check if the value of document is the same as the existing one in the viewer. If so, it will not dispose the old document. The application can set the same document in the viewer as a "reset" or "reload" operation.

Encrypted document's must be decrypted prior to setting them in the viewer. Refer to Loading Encrypted Files Using the Document Library for more information.

This method performs the following:

  1. ViewThe Operation is invoked with DocumentViewerOperation.SetDocument, Data1 set to document and IsPostOperation set to false.

  2. View, Thumbnails, Bookmarks and Annotations all may have background threads working to parse the existing document data. The document viewer will notify each object to abandon the work and exit the threads. This is performed in a graceful manner to preserve system resources and prevent memory leaks. Therefore, a slight delay might occur while the viewer waits on the threads to exit.

  3. If the existing LEADDocument is not null, not the same as document and the value of AutoDisposeDocument is true; then the LEADDocument object is disposed.

  4. View, Thumbnails, Bookmarks and Annotations will be notified that a new document is set and to start new background threads if needed or populate the UI elements from the document pages and data.

  5. ViewFinally, the Operation is invoked again with DocumentViewerOperation.SetDocument, Data1 set to document and IsPostOperation set to true this time.

Example
C#
using Leadtools; 
using Leadtools.Controls; 
using Leadtools.Document; 
using Leadtools.Document.Viewer; 
using Leadtools.Codecs; 
using Leadtools.Caching; 
using Leadtools.Annotations.Engine; 
using Leadtools.Ocr; 
 
 
public void DocumentViewer_Example() 
{ 
   // New Form to be used as our application 
   var 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 OCR. This is optional and not required for the PDF document we are loading. 
         // But if image documents are loaded and text functionality is used, then we need OCR 
         _ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD); 
         _ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS22\Bin\Common\OcrLEADRuntime"); 
 
         Init(); 
      } 
 
      base.OnLoad(e); 
   } 
 
   // Our document viewer instance 
   private DocumentViewer _documentViewer; 
 
   // Optional OCR engine to use in the example 
   private IOcrEngine _ocrEngine; 
 
   private void Init() 
   { 
      // Initialize the user interface 
      InitUI(); 
 
      // Init the cache. This is optional, but it can speed up viewing of large documents 
      // if not needed, remove this section 
      DocumentFactory.Cache = new FileCache(); 
 
      // Init the document viewer, pass along the panels 
      var createOptions = new DocumentViewerCreateOptions 
      { 
         // The middle panel for the view 
         ViewContainer = this.Controls.Find("middlePanel", false)[0], 
         // The left panel for the thumbnails 
         ThumbnailsContainer = this.Controls.Find("leftPanel", false)[0], 
         // The right panel is for bookmarks 
         BookmarksContainer = this.Controls.Find("rightPanel", false)[0], 
         // Not using annotations for now 
         UseAnnotations = false 
      }; 
 
      // Create the document viewer 
      _documentViewer = DocumentViewerFactory.CreateDocumentViewer(createOptions); 
 
      // We prefer SVG viewing 
      _documentViewer.View.PreferredItemType = DocumentViewerItemType.Svg; 
 
      // Load a document 
      var fileName = @"C:\LEADTOOLS22\Resources\Images\Leadtools.pdf"; 
      var document = DocumentFactory.LoadFromFile( 
         fileName, 
         new LoadDocumentOptions { UseCache = DocumentFactory.Cache != null }); 
 
      _documentViewer.Operation += (sender, e) => 
      { 
         if (e.Operation == DocumentViewerOperation.LoadingBookmarks) 
         { 
            // Disable the bookmarks when we are loading, enable when we are done 
            var rightPanel = this.Controls.Find("rightPanel", true)[0]; 
            if (rightPanel.InvokeRequired) 
            { 
               rightPanel.Invoke((MethodInvoker)delegate { rightPanel.Enabled = e.IsPostOperation; }); 
            } 
            else 
            { 
               rightPanel.Enabled = e.IsPostOperation; 
            } 
         } 
      }; 
 
      // If we have an OCR engine, use it 
      document.Text.OcrEngine = _ocrEngine; 
 
      // Set it in the viewer 
      _documentViewer.SetDocument(document); 
 
      // Run pan/zoom 
      var interactiveComboBox = this.Controls.Find("interactiveComboBox", true)[0] as ComboBox; 
      interactiveComboBox.SelectedItem = DocumentViewerCommands.InteractivePanZoom; 
   } 
 
   private void InitUI() 
   { 
      // Add a panel on the left for the document viewer thumbnails part 
      var 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 part 
      var 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 viewer 
      var 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 controls 
      var 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 modes 
      var interactiveComboBox = new ComboBox(); 
      interactiveComboBox.Name = "interactiveComboBox"; 
      interactiveComboBox.DropDownStyle = ComboBoxStyle.DropDownList; 
      // The command names for the items so we can just run them 
      interactiveComboBox.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 examples 
      var 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 here 
      Console.WriteLine(this + " Ready"); 
   } 
} 
Requirements

Target Platforms

Help Version 22.0.2023.1.30
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Document.Viewer.WinForms Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.