←Select platform

DocumentViewerFindText Class

Summary

Contains options for a find text operation.

Syntax
C#
C++/CLI
public class DocumentViewerFindText 
public: 
   ref class DocumentViewerFindText 
Remarks

DocumentViewerFindText contains properties to indicate the bounds, content, and other options to use for DocumentViewerText.Find. The options in DocumentViewerFindText are useful for conducting multi-result find text operations with control over character bounds, case matching, result highlighting, and more.

As discussed below, DocumentViewerFindText used to search for only one result at a time and internally held the last result, so that reuse of the same instance would search starting from that last result. From 19.0.0.49 on, DocumentViewerFindText now holds no internal state and always relies on the values of BeginPosition and Start for the initial search location.

Refer to DocumentViewerText.Find for more information.

History

19.0.0.49

This class no longer holds internal state for previous searches, and some properties have been added or removed. Refer to DocumentViewerText.Find for more information.

Changed Property Summary of Change

AutoEnsureVisible

Removed - Replaced by SelectFirstResult

AutoSelect

Removed - Replaced by SelectFirstResult

GoToNextPage

Removed - Replaced by BeginPosition and EndPosition

PageNumber

Removed - Replaced by BeginPosition and EndPosition

Recursive

Removed - Replaced by Loop

BeginPosition

Added

EndPosition

Added

FindAll

Added

Loop

Added

RenderResults

Added

SelectFirstResult

Added

Start

Added

ManualStartPosition

Added

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; 
 
 
var text = _documentViewer.Text; 
 
// Make sure we get the page text if necessary 
text.AutoGetText = true; 
 
// We will find all matches of "LEAD", ignoring the case 
var options = new DocumentViewerFindText(); 
 
// The text 
options.Text = "LEAD"; 
// Ignore case 
options.MatchCase = false; 
// Any word that contains the phrase 
options.WholeWordsOnly = false; 
 
// Find all results in the bounds, not just the first 
options.FindAll = true; 
 
// Highlight the results in the View 
options.RenderResults = true; 
// Optionally change the highlight color 
//DocumentViewerText.FoundTextBrush = new SolidBrush(Color.FromArgb(52, Color.Brown)); 
 
// Set the bounds 
bool isFindingNext = true; 
// We set the bounds as the whole document, but below we can specify to start wherever text is selected 
// or at the current page 
var topOfFirstPage = DocumentViewerTextPosition.CreateBeginOfPage(1); 
var bottomOfLastPage = DocumentViewerTextPosition.CreateEndOfPage(_documentViewer.PageCount); 
if (isFindingNext) 
{ 
   // Make the beginning bound "higher up" the page so we search "down" the page. 
   options.BeginPosition = topOfFirstPage; 
   options.EndPosition = bottomOfLastPage; 
} 
else 
{ 
   // Make the beginning bound "lower down" the page so we search "up" the page. 
   options.BeginPosition = bottomOfLastPage; 
   options.EndPosition = topOfFirstPage; 
} 
 
// Select the first result in the View (automatically scrolls View also) 
options.SelectFirstResult = true; 
 
if (text.HasAnySelectedText) 
{ 
   // Setting this value to AfterSelection allows us to search forward from the selection, so multiple 
   // uses of this same options object will cycle us through all the matches! 
   // (If no selected text actually exists, search will default to beginPosition.) 
   options.Start = DocumentViewerFindTextStart.AfterSelection; 
} 
else 
{ 
   // We could start at the begin position, but it makes more UI sense to start from the user's current page. 
   // Search will loop back around to the begin position - this just changes the starting point and order of results. 
   options.Start = DocumentViewerFindTextStart.ManualPosition; 
   if (isFindingNext) 
      options.ManualStartPosition = DocumentViewerTextPosition.CreateBeginOfPage(_documentViewer.CurrentPageNumber); 
   else 
      options.ManualStartPosition = DocumentViewerTextPosition.CreateEndOfPage(_documentViewer.CurrentPageNumber); 
} 
 
// If we were just looking for the first match, we could use "Loop" to loop around 
// if we found nothing between the start position and the end bound. 
//options.Loop = true; 
 
// You will likely want to clear the previous highlighted results 
// on the screen so only our new results will show. 
text.ClearRenderedFoundText(); 
 
// Search 
var results = text.Find(options); 
int resultsCount = results != null ? results.Count : 0; 
 
if (resultsCount > 0) 
   Console.WriteLine(string.Format("Found {0} results", resultsCount)); 
else 
   Console.WriteLine("No matches found."); 
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.