@compdfkit_pdf_sdk/react_native
Version:
ComPDFKit for React Native is a comprehensive SDK that allows you to quickly add PDF functionality to Android, iOS, and React Native applications.
137 lines • 5.41 kB
JavaScript
;
/**
* Copyright © 2014-2026 PDF Technologies, Inc. All Rights Reserved.
*
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
* This notice may not be removed from this file.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.CPDFTextSearcher = void 0;
const react_native_1 = require("react-native");
const CPDFTextRange_1 = require("./CPDFTextRange");
const { CPDFViewManager } = react_native_1.NativeModules;
class CPDFTextSearcher {
_viewerRef;
constructor(viewerRef) {
this._viewerRef = viewerRef;
}
/**
* Searches for the specified text in the current PDF document.
*
* This method performs a text search in the currently loaded PDF document
* and returns an array of results. Each result is represented by a `CPDFTextRange`
* object containing the page index, location, length, and internal range index.
*
* @param {string} searchText - The text string to search for in the document.
* @param {CPDFSearchOptions} options - Optional search parameters such as
* case sensitivity, whole word match, etc.
*
* @example
* const textSearcher = pdfReaderRef.current?._pdfDocument.textSearcher();
* const results = await textSearcher.searchText("example", new CPDFSearchOptions());
*
* if (results.length > 0) {
* const resultText = await textSearcher.getText(results[0]);
* }
*
* @returns {Promise<CPDFTextRange[]>} A promise that resolves to an array of
* `CPDFTextRange` objects representing the matched text results.
*/
searchText = async (searchText, options) => {
const tag = (0, react_native_1.findNodeHandle)(this._viewerRef);
if (tag) {
try {
const jsonArray = await CPDFViewManager.searchText(tag, searchText, options);
return jsonArray.map((item) => (new CPDFTextRange_1.CPDFTextRange(item.pageIndex, item.location, item.length, item.textRangeIndex)));
}
catch (e) {
console.error("ComPDFKitRN", "searchText error:", e);
}
}
return Promise.resolve([]);
};
/**
* Selects a specific search result and highlights it in the PDF viewer.
*
* This method is typically used when a user taps on a search result or navigates
* through search results using next/previous controls.
*
* @param {CPDFTextRange} range - The text range to select and highlight.
*
* @example
* const results = await textSearcher.searchText("example", options);
* if (results.length > 0) {
* await textSearcher.selection(results[0]);
* }
*
* @returns {Promise<void>} A promise that resolves once the selection is applied.
*/
selection = (range) => {
const tag = (0, react_native_1.findNodeHandle)(this._viewerRef);
if (tag != null) {
try {
console.log('ComPDFKitRN', 'Setting selection:', range);
return CPDFViewManager.selection(tag, range.toJson());
}
catch (e) {
// Handle error if necessary
return Promise.resolve();
}
}
return Promise.resolve();
};
/**
* Clears all search results and removes any highlights from the PDF viewer.
*
* This is typically called when closing the search UI or performing a new search.
*
* @example
* await textSearcher.clearSearch();
*
* @returns {Promise<void>} A promise that resolves when the search state is cleared.
*/
clearSearch = () => {
const tag = (0, react_native_1.findNodeHandle)(this._viewerRef);
if (tag != null) {
try {
return CPDFViewManager.clearSearch(tag);
}
catch (e) {
// Handle error if necessary
return Promise.resolve();
}
}
return Promise.resolve();
};
/**
* Retrieves the text content from a specific text range.
*
* Can be used to extract the original matched text or additional surrounding content
* by using the `expanded()` method on a `CPDFTextRange`.
*
* @param {CPDFTextRange} range - The text range from which to extract text.
*
* @example
* const results = await textSearcher.searchText("example", options);
* const originalText = await textSearcher.getText(results[0]);
* const expandedText = await textSearcher.getText(results[0].expanded(10, 10));
*
* @returns {Promise<string>} A promise that resolves with the extracted text content.
*/
getText = (range) => {
const tag = (0, react_native_1.findNodeHandle)(this._viewerRef);
if (tag != null) {
try {
return CPDFViewManager.getSearchText(tag, range.pageIndex, range.location, range.length);
}
catch (e) {
return Promise.resolve('');
}
}
return Promise.resolve('');
};
}
exports.CPDFTextSearcher = CPDFTextSearcher;
//# sourceMappingURL=CPDFTextSearcher.js.map