Add text search bar to Xamarin PDF viewer
Text search functionality can be added to your viewer using the text search UI component. Alternatively, you can programmatically perform text search in PDFViewCtrl.
Prerequisites
Set up PDFViewCtrl and ToolManager in your activity.
Add text search using UI component
Apryse provides SearchToolbar and FindTextOverlay as utility classes for implementing text search in your document viewer. Here is a short guide on adding text search to your activity:
Add the search controls to your layout, a simple example will be something like:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
<pdftron.PDF.Controls.SearchToolbar android:id="@+id/searchtoolbar" android:visibility="gone" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" app:contentInsetStart="@dimen/second_keyline" android:background="?attr/colorPrimary" app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:navigationIcon="@drawable/ic_arrow_back_white_24dp" />
<pdftron.PDF.PDFViewCtrl android:id="@+id/pdfviewctrl" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:scrollbars="vertical|horizontal" />
</LinearLayout>
<pdftron.PDF.Controls.FindTextOverlay android:id="@+id/find_text_view" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone"/>
</RelativeLayout>In
onCreateof your activity, set up yourSearchToolbarandFindTextOverlay:
var searchToolbar = FindViewById<pdftron.PDF.Controls.SearchToolbar>(Resource.Id.searchtoolbar);
var searchOverlay = FindViewById<pdftron.PDF.Controls.FindTextOverlay>(Resource.Id.find_text_view);
searchOverlay.SetPdfViewCtrl(mPdfViewCtrl);
searchToolbar.ExitSearch += (sender, e) =>
{
searchToolbar.Visibility = ViewStates.Gone;
searchOverlay.Visibility = ViewStates.Gone;
searchOverlay.ExitSearchMode();
};
searchToolbar.ClearSearchQuery += (sender, e) =>
{
searchOverlay?.CancelFindText();
};
searchToolbar.SearchQuerySubmit += (sender, e) =>
{
searchOverlay?.QueryTextSubmit(e.Query);
};
searchToolbar.SearchQueryChange += (sender, e) =>
{
searchOverlay?.SetSearchQuery(e.Query);
};
searchToolbar.SearchOptionsItemSelected += (sender, e) =>
{
int id = e.Item.ItemId;
if (id == Resource.Id.action_match_case)
{
bool isChecked = e.Item.IsChecked;
searchOverlay?.SetSearchMatchCase(!isChecked);
searchOverlay?.ResetFullTextResults();
e.Item.SetChecked(!isChecked);
}
else if (id == Resource.Id.action_whole_word)
{
bool isChecked = e.Item.IsChecked;
searchOverlay?.SetSearchWholeWord(!isChecked);
searchOverlay?.ResetFullTextResults();
e.Item.SetChecked(!isChecked);
}
};Show the layout
Now when running the app, you will see a toolbar that allows you to enter search terms as well as an overlay on top of the PDFViewCtrl that navigates among search results.

Search results view
SearchResultsView class enables users to easily search for a query and see the results.

To set up your layout for a SearchResultsView, add an element to your XML layout as follows:
Then, you need to set the following events
An item from the search results is clicked
A full-text search is started and result has not yet been ready
A search is found
Last updated
Was this helpful?