in app/redact/PdfRedactor.scala [103:119]
def removeFirstPage(document: PDDocument) = if (enableNewPageSplittingAndDeletion) document.removePage(0)
def redactFoundText(document: PDDocument, redactions: List[FoundText]): Unit = {
val allPages = document.getDocumentCatalog.getPages
redactions.groupBy(_.pageIndex).foreach { case (index, pageData) =>
val page = allPages.get(index)
val contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, false, true)
pageData.foreach({ case FoundText(_, x1, y1, x2, y2, _) =>
contentStream.setNonStrokingColor(Color.BLACK)
val padding = ((y2 - y1) * 0.3).toFloat
contentStream.addRect(x1, page.getBBox.getHeight - y1 - padding, x2 - x1, y2 - y1 + padding)
contentStream.fill()
})
contentStream.close()
}
}