Аннотации безопасности на Java
Contents
[
Hide
]
В этом разделе рассматриваются подготовка и применение аннотаций для удаления конфиденциального содержимого PDF.
Пометка текста аннотациями удаления
Используйте этот пример, чтобы пометить найденный текст аннотациями удаления перед его безвозвратным удалением.
- Откройте исходный PDF-документ с помощью Document.
- Найдите целевой текст и создайте RedactionAnnotation для каждого совпадения.
- Настройте внешний вид аннотаций удаления и сохраните документ.
public static void markTextRedaction(Path inputFile, Path outputFile, String searchTerm) {
try (Document document = new Document(inputFile.toString())) {
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(searchTerm);
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.setTextSearchOptions(textSearchOptions);
document.getPages().accept(textFragmentAbsorber);
for (var textFragment : textFragmentAbsorber.getTextFragments()) {
Page page = textFragment.getPage();
RedactionAnnotation redactionAnnotation = new RedactionAnnotation(page, textFragment.getRectangle());
redactionAnnotation.setFillColor(Color.getGray());
redactionAnnotation.setBorderColor(Color.getRed());
redactionAnnotation.setColor(Color.getWhite());
redactionAnnotation.setOverlayText("REDACTED");
redactionAnnotation.setTextAlignment(HorizontalAlignment.Center);
redactionAnnotation.setRepeat(true);
page.getAnnotations().add(redactionAnnotation, true);
}
document.save(outputFile.toString());
}
}
Применение существующих аннотаций удаления
В этом примере существующие на странице аннотации удаления применяются для безвозвратного удаления содержимого.
- Откройте исходный PDF-документ с помощью Document.
- Соберите аннотации типа AnnotationType.
Redaction. - Вызовите
redact()для каждой собранной аннотации и сохраните обновлённый файл.
public static void applyRedaction(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
List<RedactionAnnotation> redactionAnnotations = new ArrayList<>();
for (Annotation annotation : document.getPages().get_Item(1).getAnnotations()) {
if (annotation.getAnnotationType() == AnnotationType.Redaction) {
redactionAnnotations.add((RedactionAnnotation) annotation);
}
}
for (RedactionAnnotation redactionAnnotation : redactionAnnotations) {
redactionAnnotation.redact();
}
document.save(outputFile.toString());
}
}
Пометка выбранной области страницы для удаления
Используйте этот подход, когда целевой контент определяется по позиции, а не по совпадению текста.
- Откройте исходный PDF-документ с помощью Document.
- Определите целевой прямоугольник на странице, например по расположению изображения.
- Создайте RedactionAnnotation для этой области и сохраните документ.
public static void redactArea(Path inputFile, Path outputFile) {
try (Document document = new Document(inputFile.toString())) {
ImagePlacementAbsorber imagePlacementAbsorber = new ImagePlacementAbsorber();
Page page = document.getPages().get_Item(1);
page.accept(imagePlacementAbsorber);
com.aspose.pdf.Rectangle targetRect = imagePlacementAbsorber.getImagePlacements().get_Item(2).getRectangle();
RedactionAnnotation redactionAnnotation = new RedactionAnnotation(page, targetRect);
redactionAnnotation.setFillColor(Color.getGray());
redactionAnnotation.setBorderColor(Color.getRed());
redactionAnnotation.setColor(Color.getWhite());
redactionAnnotation.setOverlayText("REDACTED");
redactionAnnotation.setTextAlignment(HorizontalAlignment.Center);
redactionAnnotation.setRepeat(true);
page.getAnnotations().add(redactionAnnotation, true);
document.save(outputFile.toString());
}
}