The DocumentViewer class is the main class used by the document viewer.
public class DocumentViewer : IDisposable
Public Class DocumentViewer
public:
ref class DocumentViewer
The Document Viewer uses LEADTOOLS Raster and Documents support, Caching, SVG, OCR, Annotations, and Image Viewer technologies to create applications that can view, edit, and modify any type of document on the desktop or web with a minimal amount of code.
DocumentViewer is the main class used by the document viewer. It is not a control itself: instead, it uses the parent containers provided by the user to create the necessary UI controls. These containers are native controls in the calling platform (for example, native Controls in Windows Forms and DIV elements in HTML/JavaScript).
The DocumentViewer has the following parts:
View: The main content of the document is viewed here. This part is optional.
Thumbnails: The thumbnails of the pages are viewed here. This part is optional.
Bookmarks: The bookmarks and table of contents for the document are added, viewed, and manipulated here. This part is optional.
Annotations: The annotations toolbar and the objects list are added, viewed, and manipulated here. This part is optional.
Application User Interface: The remaining parts are the UI elements of the user application (they are not part of the document viewer). These are typically standard menu and toolbar items tied to document viewer commands.
Use DocumentViewerFactory.CreateDocumentViewer to create a new instance of DocumentViewer. Then use SetDocument to set LEADDocument objects for viewing, text search, annotations, and converting. Refer to Using LEADTOOLS Document Viewer for more information.
This example will show how to create a functional DocumentViewer in your Windows Forms application.
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:\LEADTOOLS21\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:\LEADTOOLS21\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");
}
}
Imports Leadtools
Imports Leadtools.Controls
Imports Leadtools.Document
Imports Leadtools.Document.Viewer
Imports Leadtools.Codecs
Imports Leadtools.Caching
Imports Leadtools.Annotations.Engine
Imports Leadtools.Ocr
Public Sub DocumentViewer_Example()
' New Form to be used as our application
Dim form As New MyForm()
form.ShowDialog()
End Sub
Class MyForm
Inherits Form
Public Sub New()
Me.Size = New Size(800, 800)
Me.Text = "LEADTOOLS Document Viewer Example"
End Sub
Protected Overrides Sub OnLoad(e As EventArgs)
If Not DesignMode Then
' 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(Nothing, Nothing, Nothing, "C:\LEADTOOLS21\Bin\Common\OcrLEADRuntime")
Init()
End If
MyBase.OnLoad(e)
End Sub
' Our document viewer instance
Private _documentViewer As DocumentViewer
' Optional OCR engine to use in the example
Private _ocrEngine As IOcrEngine
Private Sub 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
Dim createOptions As New DocumentViewerCreateOptions()
' The middle panel for the view
createOptions.ViewContainer = Me.Controls.Find("middlePanel", False)(0)
' The left panel for the thumbnails
createOptions.ThumbnailsContainer = Me.Controls.Find("leftPanel", False)(0)
' The right panel is for bookmarks
createOptions.BookmarksContainer = Me.Controls.Find("rightPanel", False)(0)
' Not using annotations for now
createOptions.UseAnnotations = False
' Create the document viewer
_documentViewer = DocumentViewerFactory.CreateDocumentViewer(createOptions)
' We prefer SVG viewing
_documentViewer.View.PreferredItemType = DocumentViewerItemType.Svg
' Load a document
Dim fileName As String = "C:\LEADTOOLS21\Resources\Images\Leadtools.pdf"
Dim loadOptions As New LoadDocumentOptions()
loadOptions.UseCache = Not IsNothing(DocumentFactory.Cache)
Dim document As LEADDocument = DocumentFactory.LoadFromFile(fileName, loadOptions)
AddHandler _documentViewer.Operation,
Sub(sender, e)
If e.Operation = DocumentViewerOperation.LoadingBookmarks Then
' Disable the bookmarks when we are loading, enable when we are done
Dim rightPanel As Control = Me.Controls.Find("rightPanel", True)(0)
If rightPanel.InvokeRequired Then
rightPanel.Invoke(DirectCast(Sub() rightPanel.Enabled = e.IsPostOperation, MethodInvoker))
Else
rightPanel.Enabled = e.IsPostOperation
End If
End If
End Sub
' If we have an OCR engine, use it
document.Text.OcrEngine = _ocrEngine
' Set it in the viewer
_documentViewer.SetDocument(document)
' Run pan/zoom
Dim interactiveComboBox As ComboBox = CType(Me.Controls.Find("interactiveComboBox", True)(0), ComboBox)
interactiveComboBox.SelectedItem = DocumentViewerCommands.InteractivePanZoom
End Sub
Private Sub InitUI()
' Add a panel on the left for the document viewer thumbnails part
Dim leftPanel As New Panel()
leftPanel.Name = "leftPanel"
leftPanel.Width = 200
leftPanel.Dock = DockStyle.Left
leftPanel.BackColor = Color.Gray
leftPanel.BorderStyle = BorderStyle.FixedSingle
Me.Controls.Add(leftPanel)
' Add a panel to the right, this will work for the bookmarks or annotations part
Dim rightPanel As New Panel()
rightPanel.Name = "rightPanel"
rightPanel.Width = 200
rightPanel.Dock = DockStyle.Right
rightPanel.BackColor = Color.LightBlue
rightPanel.BorderStyle = BorderStyle.FixedSingle
Me.Controls.Add(rightPanel)
' Add a panel to fill the rest, for the document viewer
Dim middlePanel As New Panel()
middlePanel.Name = "middlePanel"
middlePanel.BackColor = Color.DarkGray
middlePanel.BorderStyle = BorderStyle.None
middlePanel.Dock = DockStyle.Fill
Me.Controls.Add(middlePanel)
' Add a top panel to host our application controls
Dim topPanel As New Panel()
topPanel.Name = "topPanel"
topPanel.Height = 100
topPanel.Dock = DockStyle.Top
topPanel.BorderStyle = BorderStyle.FixedSingle
Me.Controls.Add(topPanel)
middlePanel.BringToFront()
' Add buttons for the UI
' Combo box for interactive modes
Dim interactiveComboBox As 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)
AddHandler interactiveComboBox.SelectedIndexChanged,
Sub(sender, e)
Dim commandName As String = CType(interactiveComboBox.SelectedItem, String)
_documentViewer.Commands.Run(commandName)
End Sub
topPanel.Controls.Add(interactiveComboBox)
' Generic label for information used by the examples
Dim infoLabel As New Label()
infoLabel.Name = "infoLabel"
infoLabel.Text = "Info..."
infoLabel.AutoSize = False
infoLabel.Width = 400
infoLabel.Left = interactiveComboBox.Right + 20
topPanel.Controls.Add(infoLabel)
Dim exampleButton As New Button()
exampleButton.Top = interactiveComboBox.Bottom + 2
exampleButton.Name = "exampleButton"
exampleButton.Text = "&Example"
AddHandler exampleButton.Click, Sub(sender, e) Example(exampleButton)
topPanel.Controls.Add(exampleButton)
End Sub
Private Sub Example(exampleButton As Button)
' Add the example code here
MessageBox.Show(Me, "Ready")
End Sub
End Class
Leadtools.Document.Viewer Namespace
Using LEADTOOLS Document Viewer
Loading Using LEADTOOLS Document Library
Uploading Using the Document Library
Document Library Coordinate System
Parsing Text with the Document Library
Barcode Processing with the Document Library
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document