This tutorial shows how to create a C# Windows WinForms application that uses the LEADTOOLS SDK to load a document into the WinForms Document Viewer.
Overview | |
---|---|
Summary | This tutorial covers how to use LEADTOOLS Document Viewer SDK technology in a C# Windows WinForms Application. |
Completion Time | 30 minutes |
Visual Studio Project | Download tutorial project (7 KB) |
Platform | C# Windows WinForms Application |
IDE | Visual Studio 2022 |
Development License | Download LEADTOOLS |
Try it in another language |
Get familiar with the basic steps of creating a project by reviewing the Add References and Set a License tutorial, before working on this tutorial.
In Visual Studio, create a new C# Windows WinForms project, and add the below necessary LEADTOOLS references.
The references needed depend upon the purpose of the project. References can be added by one or the other of the following two methods (but not both). For this project, the following references are needed:
If NuGet references are used, this tutorial requires the following NuGet packages:
Leadtools.Document.Sdk
Leadtools.Document.Viewer.WinForms
If local DLL references are used, the following DLLs are needed. The DLLs are located at <INSTALL_DIR>\LEADTOOLS23\Bin\net
:
Leadtools.dll
Leadtools.Caching.dll
Leadtools.Controls.WinForms.dll
Leadtools.Core.dll
Leadtools.Document.dll
Leadtools.Document.Pdf.dll
Leadtools.Document.Viewer.WinForms.dll
For a complete list of which Codec DLLs are required for specific formats, refer to File Format Support.
The License unlocks the features needed for the project. It must be set before any toolkit function is called. For details, including tutorials for different platforms, refer to Setting a Runtime License.
There are two types of runtime licenses:
With the project created, the references added, and the license set, coding can begin.
In the Solution Explorer, open Form1.cs
. Right-click on the Design Window
and select View Code
or press F7 to bring up the code behind the Form. Add the following statements to the using
block at the top:
using Leadtools;
using Leadtools.Document;
using Leadtools.Caching;
using Leadtools.Document.Viewer;
using Leadtools.Controls;
Add the following global variables:
private LEADDocument _virtualDocument;
private FileCache _cache;
private DocumentViewer _documentViewer;
Add a new method called InitDocumentViewer()
and call this method inside the Form1
Main method after the SetLicense()
call. Add the below code to initialize the Document Viewer.
public Form1()
{
InitializeComponent();
InitLEAD();
InitDocumentViewer();
}
private void InitDocumentViewer()
{
InitUI();
var createOptions = new DocumentViewerCreateOptions();
// Set the UI part where the Document Viewer is displayed
createOptions.ViewContainer = this.Controls.Find("docViewerPanel", false)[0];
// Set the UI part where the Thumbnails are displayed
createOptions.ThumbnailsContainer = this.Controls.Find("thumbPanel", false)[0];
// Not using annotations for now
createOptions.UseAnnotations = false;
// Now create the viewer
_documentViewer = DocumentViewerFactory.CreateDocumentViewer(createOptions);
_documentViewer.View.ImageViewer.Zoom(ControlSizeMode.FitAlways, 1.0, _documentViewer.View.ImageViewer.DefaultZoomOrigin);
_cache = new FileCache
{
CacheDirectory = Path.GetFullPath(@".\CacheDir"),
};
_virtualDocument = DocumentFactory.Create(new CreateDocumentOptions() { Cache = _cache, UseCache = true });
}
Add a new method called InitUI()
. This method will be called at the beginning of the InitDocumentViewer()
method. Add the below code to initialize the Document Viewer panels and application controls.
private void InitUI()
{
// Add a panel on the left for the document viewer thumbnails
var thumbPanel = new Panel();
thumbPanel.Name = "thumbPanel";
thumbPanel.Width = 200;
thumbPanel.Dock = DockStyle.Left;
thumbPanel.BackColor = Color.Gray;
thumbPanel.BorderStyle = BorderStyle.FixedSingle;
this.Controls.Add(thumbPanel);
// Add a panel to fill the rest, for the document viewer
var docViewerPanel = new Panel();
docViewerPanel.Name = "docViewerPanel";
docViewerPanel.BackColor = Color.DarkGray;
docViewerPanel.BorderStyle = BorderStyle.None;
docViewerPanel.Dock = DockStyle.Fill;
this.Controls.Add(docViewerPanel);
// Add a top panel to host the application controls
var topPanel = new Panel();
topPanel.Name = "topPanel";
topPanel.Height = 30;
topPanel.Dock = DockStyle.Top;
topPanel.BorderStyle = BorderStyle.FixedSingle;
this.Controls.Add(topPanel);
docViewerPanel.BringToFront();
var loadButton = new Button();
loadButton.Name = "loadButton";
loadButton.Text = "&Load";
loadButton.Click += (sender, e) => LoadDocument(loadButton);
topPanel.Controls.Add(loadButton);
}
Add a new method to the Form1
class called LoadDocument(Button loadButton)
. This method will be called in the loadButton.Click += (sender, e) => LoadDocument(loadButton);
line of code inside the InitUi()
method. Add the below code inside the LoadDocument(Button loadButton)
method to load the specified document and set the document inside the viewer.
private void LoadDocument(Button loadButton)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "All Files|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
LEADDocument leadDocument = DocumentFactory.LoadFromFile(ofd.FileName, new LoadDocumentOptions { UseCache = true, Cache = _cache, LoadEmbeddedAnnotations = true });
_virtualDocument.Pages.Clear();
for(int i = 0; i < leadDocument.Pages.Count; i++)
{
_virtualDocument.Pages.Add(leadDocument.Pages[i]);
}
}
_documentViewer.BeginUpdate();
_documentViewer.SetDocument(_virtualDocument);
_documentViewer.View.Invalidate();
if (_documentViewer.Thumbnails != null)
_documentViewer.Thumbnails.Invalidate();
_documentViewer.EndUpdate();
}
Run the project by pressing F5, or by selecting Debug -> Start Debugging.
If the steps were followed correctly, the application will run. To test, click on the Load
button to bring up the OpenFileDialog. Select a document to load and the document should appear in the viewer as shown below:
This tutorial showed how to initialize the WinForms Document Viewer, load a document, and set the document into the viewer. Also it covered how to use the DocumentViewer
and LEADDocument
classes.