Как работать с фасадами PDF в Java

Как работать с фасадами PDF в Java

Объединить аннотации

Объединить все аннотации в поток содержимого страницы, чтобы они больше не были редактируемыми или удаляемыми как отдельные объекты аннотаций. Это обычный шаг перед печатью или архивированием документа:

try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
    editor.bindPdf("annotated.pdf");
    editor.flattenAnnotations();
    editor.save("flat.pdf");
}

Удалить закладки

Удалить все закладки-контуры из документа. Закладки (также называемые контурами) — это элементы навигационного дерева, видимые в боковых панелях PDF-читалок:

try (PdfBookmarkEditor editor = new PdfBookmarkEditor()) {
    editor.bindPdf("input.pdf");
    editor.deleteBookmarks();
    editor.save("no-bookmarks.pdf");
}

Заменить текст

Заменить строку на всех страницах документа. Это полезно для заполнения шаблонных плейсхолдеров перед распространением документа:

try (PdfContentEditor editor = new PdfContentEditor()) {
    editor.bindPdf("template.pdf");
    editor.replaceText("{{Date}}", "2026-05-24");
    editor.save("output.pdf");
}

Зашифровать документ

Примените AES-256 шифрование с разрешениями доступа, используя PdfFileSecurity. Предустановка DocumentPrivilege.getForbidAll() отключает все операции; отдельные разрешения затем можно вновь включить с помощью методов-установщиков:

try (PdfFileSecurity security = new PdfFileSecurity("input.pdf", "secured.pdf")) {
    DocumentPrivilege priv = DocumentPrivilege.getForbidAll();
    priv.setAllowPrint(true);
    security.encryptFile("user", "owner", priv, KeySize.x256);
}

Извлечь текст

Итерировать текст страниц с помощью PdfExtractor. Сначала вызовите extractText(), чтобы обработать все страницы, затем получите текст каждой страницы с помощью getNextPageText():

try (PdfExtractor extractor = new PdfExtractor()) {
    extractor.bindPdf("document.pdf");
    extractor.extractText();
    while (extractor.hasNextPageText()) {
        String text = extractor.getNextPageText();
        System.out.println(text);
    }
}

См. также:

 Русский