PDF Search Matching Options in iOS

PDFLibrary offers advanced matching options. Pass these options in a Dictionary when calling documentUIDs(matching:options:completionHandler:previewTextHandler:).

Name Type Description
.maximumSearchResultsTotal UInt The maximum amount of search results for the total of all documents. Defaults to 500.
.maximumSearchResultsPerDocument UInt The maximum amount of search results per document.
.maximumPreviewResultsTotal UInt The maximum amount of preview search results of all documents. Defaults to 500.
.maximumPreviewResultsPerDocument UInt The maximum amount of preview search results per document.
.matchExactWordsOnly Bool Only matches exact words. For example, “something” would not match “some.”
.matchExactPhrasesOnly Bool Only matches exact phrases. For example, “this is a test” would not match “this is a quick test.”
.excludeAnnotations Bool Excludes annotations from the search. By default, indexed annotations will be searched.
.excludeDocumentText Bool Excludes document text from the search. By default, indexed document text will be searched.
.previewRange NSRange The range of the preview string. Defaults to 20/160.

Advanced Configuration

You can configure PDFLibrary to match your needs. The following properties on PDFLibrary are available.

Property Type Default Description
tokenizer String? nil The tokenizer used by the library. nil means PSPDFKit’s Porter tokenizer is used. You can learn more about this advanced topic by reading the custom tokenizers guide.
saveReversedPageText Bool true This indicates whether or not the reversed text of a PDF document should be saved. This increases the size of the cache by about two, but it allows for “ends with” searches.
shouldIndexAnnotations Bool true This specifies whether contents of annotations in documents should be indexed as well.

You can also create your own instance of PDFLibrary. Use PDFLibrary(path:) to create a new instance. path must be the path to an empty directory. If path doesn’t yet exist, the library will create it for you. The SQLite database cache will be stored there. Subsequent calls to PDFLibrary(path:) will always return the same object.