Search and redact PDFs on Android
Nutrient Android SDK enables you to search and redact text in a PDF document. In this guide, you’ll see how to redact a search term in a document.
The process involves using the TextSearch
API and then looping through the search results, adding RedactionAnnotation
s as you loop:
val wordToSearch = "secret"val textSearch = TextSearch(document, configuration)val searchResults = textSearch.performSearch(wordToSearch)
for (searchResult in searchResults) { val redaction = RedactionAnnotation(searchResult.pageIndex, searchResult.textBlock.pageRects).apply { color = Color.BLACK fillColor = Color.BLACK outlineColor = Color.YELLOW overlayText = "REDACTED" } document.annotationProvider.addAnnotationToPage(redaction)}
final String wordToSearch = "secret";final TextSearch textSearch = new TextSearch(document, configuration);final List<SearchResult> searchResults = textSearch.performSearch(wordToSearch);
for (SearchResult searchResult : searchResults) { final RedactionAnnotation redaction = new RedactionAnnotation(searchResult.pageIndex, searchResult.textBlock.pageRects); redaction.setColor(Color.BLACK); redaction.setFillColor(Color.BLACK); redaction.setOutlineColor(Color.YELLOW); redaction.setOverlayText("REDACTED");
document.getAnnotationProvider().addAnnotationToPage(redaction);}
Finally, create a new PDF file for the redacted document by applying redactions.
You can do so using the PdfProcessor
API:
val outputFile: Fileval document: PdfDocumentval processorTask = PdfProcessorTask.fromDocument(document) .applyRedactions()
PdfProcessor.processDocument(processorTask, outputFile)val redactedDocument = PdfDocumentLoader.openDocument(context, Uri.fromFile(outputFile))
final File outputFile;final PdfDocument document;final PdfProcessorTask processorTask = PdfProcessorTask.fromDocument(document) .applyRedactions();
PdfProcessor.processDocument(processorTask, outputFile);final PdfDocument redactedDocument = PdfDocumentLoader.openDocument(context, Uri.fromFile(outputFile));
Or, you can use the DocumentSaveOptions#setApplyRedactions()
option when saving the document via any of the save methods on PdfDocument
.
Bear in mind that this will overwrite the existing document, removing content irreversibly:
val documentSaveOptions = DocumentSaveOptions(null, null, true, null);documentSaveOptions.setApplyRedactions(true)document.saveIfModified(documentSaveOptions)
final DocumentSaveOptions documentSaveOptions = new DocumentSaveOptions(null, null, false, null);documentSaveOptions.setApplyRedactions(true);document.saveIfModified(documentSaveOptions);