Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.4.3
|
Leadtools.Documents.UI Namespace : DocumentViewerText Class |
public class DocumentViewerText
'Declaration
Public Class DocumentViewerText
'Usage
Dim instance As DocumentViewerText
public ref class DocumentViewerText
DocumentViewerText can be accessed by the Text property of DocumentViewer. An instance is always available when the control is created and is never null.
This class manages the text operations of the current Document set in the document viewer. The text is treated as a read-only option and cannot be changed. The operations that can be performed includes selecting characters, words or lines using the mouse or touch, highlighting the selected text of the pages, performing free text search in the document using "find", "find next" and "find previous" and exporting the text as a simple string or to the clipboard.
The text of a document page is obtained using the DocumentPage.GetText method. This parses any text elements found on a page using SVG or OCR technologies and returns it in a DocumentPageText object that contains the character code, location and size of each text character found in the page.
The DocumentViewerTextItem class contains information of a selected text item on a page. This includes the page number, the bounding rectangle of the selection as well as the range of the characters selected in the corresponding DocumentPageText.
DocumentViewerText keeps track of the selection state internally in a list of DocumentViewerTextItem items. When the text selection changes, this list is updated to reflect the current state. These items are also used to highlight the current text selection on DocumentViewer.View.ImageViewer.
DocumentViewerSelectTextInteractiveMode uses the methods of DocumentViewerText to perform its main action of selecting text interactively using mouse or touch. The draw designers of the AnnTextReviewObject objects such as highlight, underline strikeout and text redaction also uses the methods of this class to perform their actions if annotations support is used.
Obtaining the text can be a time consuming operation especially if OCR is used. Therefore, DocumentViewerText tries to obtain the text only as needed and then stores the DocumentPageText items internally and re-uses them.
The AutoGetText property controls how text is obtained and should be set according to the application need.
DocumentViewerText uses the Operation event to inform the user when text is obtained from the document and if the text selection changes. Refer to Document Viewer Operations for more information.
In addition to the methods of this class, the application can use the commands system to interact with the text. Refer to the Text section in Document Viewer Commands for more information.
Start with the example created in DocumentViewer, remove all the code in the Example function and add the code below.
When the user clicks the Example button, we will select all the text at the top half of the current page.
Imports Leadtools Imports Leadtools.Controls Imports Leadtools.Documents Imports Leadtools.Documents.UI Imports Leadtools.Codecs Imports Leadtools.Caching Imports Leadtools.Annotations.Core Imports Leadtools.Forms.Ocr Dim text As DocumentViewerText = _documentViewer.Text ' First check if we have text for this page Dim pageNumber As Integer = _documentViewer.CurrentPageNumber If Not text.HasDocumentPageText(pageNumber) Then ' Get the text text.GetDocumentPageText(pageNumber) ' Show it Dim value As String = text.ExportText(pageNumber) MessageBox.Show(value) End If ' Get the current document Dim document As Document = _documentViewer.Document ' Get the page and the current view item Dim page As DocumentPage = document.Pages(pageNumber - 1) ' Create a rectangle that is the first half of the page Dim bounds As LeadRectD = LeadRectD.Create(0, 0, page.Size.Width, page.Size.Height / 2) ' SelectText requires the rectangle to be in control pixel coordinates, so convert. First to pixels ... bounds = document.RectToPixels(bounds).ToLeadRectD() ' And then using the image viewer in the view to control. The item is the one at page number - 1 Dim imageViewer As ImageViewer = _documentViewer.View.ImageViewer bounds = imageViewer.ConvertRect(imageViewer.Items(pageNumber - 1), ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, bounds) ' Select it, all lines text.SelectText(bounds.ToLeadRect(), DocumentViewerSelectTextMode.Line) ' Now, check if we have any text selected If text.HasSelectedText(pageNumber) Then ' yes, show it Dim value As String = text.GetSelectedText(pageNumber) MessageBox.Show(value) End If
using Leadtools; using Leadtools.Controls; using Leadtools.Documents; using Leadtools.Documents.UI; using Leadtools.Codecs; using Leadtools.Caching; using Leadtools.Annotations.Core; using Leadtools.Forms.Ocr; var text = _documentViewer.Text; // First check if we have text for this page var pageNumber = _documentViewer.CurrentPageNumber; if (!text.HasDocumentPageText(pageNumber)) { // Get the text text.GetDocumentPageText(pageNumber); // Show it var value = text.ExportText(pageNumber); MessageBox.Show(value); } // Get the current document var document = _documentViewer.Document; // Get the page and the current view item var page = document.Pages[pageNumber - 1]; // Create a rectangle that is the first half of the page var bounds = LeadRectD.Create(0, 0, page.Size.Width, page.Size.Height / 2); // SelectText requires the rectangle to be in control pixel coordinates, so convert. First to pixels ... bounds = document.RectToPixels(bounds).ToLeadRectD(); // And then using the image viewer in the view to control. The item is the one at page number - 1 var imageViewer = _documentViewer.View.ImageViewer; bounds = imageViewer.ConvertRect(imageViewer.Items[pageNumber - 1], ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, bounds); // Select it, all lines text.SelectText(bounds.ToLeadRect(), DocumentViewerSelectTextMode.Line); // Now, check if we have any text selected if (text.HasSelectedText(pageNumber)) { // yes, show it var value = text.GetSelectedText(pageNumber); MessageBox.Show(value); }