Слой фасадов в Aspose.PDF FOSS для Java
Aspose.PDF FOSS для Java включает слой фасадов — набор высокоуровневых, ориентированных на задачу классов, предоставляющих целевые операции над PDF-документами без необходимости навигации по полной объектной модели PDF. Каждый класс фасада следует той же схеме: привязывает документ, выполняет операции, сохраняет результат.
Все классы фасадов находятся в пакете org.aspose.pdf.facades:
import org.aspose.pdf.facades.*;
PdfAnnotationEditor: Сведение к плоскому виду и удаление аннотаций
PdfAnnotationEditor предоставляет операции для массового управления аннотациями: преобразование их в содержимое страницы, удаление всех аннотаций или удаление определённых типов аннотаций по имени.
try (PdfAnnotationEditor editor = new PdfAnnotationEditor()) {
editor.bindPdf("annotated.pdf");
// Flatten all annotations into the page content stream
editor.flattenAnnotations();
editor.save("flat.pdf");
}
Перегрузка deleteAnnotations(annotationType) принимает строку типа аннотации, например "Highlight" или "Widget", чтобы удалить только аннотации этого типа. countAnnotations() возвращает общее количество аннотаций на всех страницах.
PdfBookmarkEditor: Создание и удаление закладок
PdfBookmarkEditor управляет деревом оглавления PDF (закладки). Он предоставляет методы для создания новых закладок с помощью createBookmarks(), удаления всех закладок с помощью deleteBookmarks() и удаления закладок по заголовку с помощью deleteBookmarkByTitle().
try (PdfBookmarkEditor bookmarkEditor = new PdfBookmarkEditor()) {
bookmarkEditor.bindPdf("input.pdf");
// Remove all bookmarks from the document
bookmarkEditor.deleteBookmarks();
bookmarkEditor.save("no-bookmarks.pdf");
}
Перегрузка bindPdf(document) принимает объект Document напрямую, позволяя использовать её в конвейерах, где документ уже загружен в память.
PdfContentEditor: Замена текста
PdfContentEditor поддерживает целенаправленную замену текста в потоках содержимого PDF. replaceText(searchText, replaceText) заменяет все вхождения строки во всём документе; replaceText(searchText, pageNumber, replaceText) ограничивает замену одной страницей.
try (PdfContentEditor contentEditor = new PdfContentEditor()) {
contentEditor.bindPdf("template.pdf");
contentEditor.replaceText("{{CompanyName}}", "Acme Corp");
contentEditor.save("output.pdf");
}
TextReplaceOptions контролирует, должна ли замена сохранять оригинальный шрифт и размер или наследовать свойства текста из окружающего содержимого. getStamps(pageNumber) возвращает объекты StampInfo для всех штампов на странице, а deleteStampById() удаляет конкретный штамп по его идентификатору.
PdfFileSecurity: Шифрование и разрешения
PdfFileSecurity управляет безопасностью на уровне документа, включая шифрование, дешифрование и разрешения доступа. Варианты конструктора принимают пути к файлам, потоки или существующий экземпляр Document вместе с назначением вывода.
DocumentPrivilege представляет разрешения доступа к зашифрованному документу. Используйте DocumentPrivilege.getForbidAll(), чтобы запретить все пользовательские операции, или DocumentPrivilege.getAllowAll(), чтобы предоставить полный доступ.
try (PdfFileSecurity security = new PdfFileSecurity("input.pdf", "secured.pdf")) {
DocumentPrivilege privilege = DocumentPrivilege.getForbidAll();
privilege.setAllowPrint(true);
security.encryptFile("userPass", "ownerPass", privilege, KeySize.x256);
}
decryptFile(ownerPassword) удаляет шифрование, когда известен пароль владельца. Перечисление Algorithm предоставляет семейства алгоритмов RC4 и AES; KeySize указывает длину ключа.
PdfFileStamp: Добавление штампов и номеров страниц
PdfFileStamp добавляет текстовые и графические штампы на страницы PDF и может автоматически генерировать отформатированные номера страниц. Штампы размещаются с помощью координатного позиционирования на каждой странице.
try (PdfFileStamp stamp = new PdfFileStamp("input.pdf", "stamped.pdf")) {
// Add formatted page numbers to all pages
stamp.addPageNumber("Page #", PageNumberingStyle.NumeralsArabic,
0, 0, 0, 20);
}
PdfExtractor: Извлечение текста и изображений
PdfExtractor предоставляет вытягиваемый API для извлечения текста и изображений из PDF-документов. После привязки документа вызовите extractText() для запуска извлечения текста, затем итеративно используйте hasNextPageText() и getNextPageText():
try (PdfExtractor extractor = new PdfExtractor()) {
extractor.bindPdf("document.pdf");
extractor.extractText();
while (extractor.hasNextPageText()) {
String pageText = extractor.getNextPageText();
// Collect extracted page content
}
}
Для извлечения изображений extractImage() инициирует процесс, а hasNextImage() / getNextImage(outputStream) перебирают извлечённые изображения. Методы getPassword() и setPassword() поддерживают зашифрованные документы.
Начало работы
Добавьте зависимость Maven:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-pdf-foss</artifactId>
<version>26.8.0</version>
</dependency>Все фасадные классы требуют Java 11 или новее. Aspose.PDF FOSS для Java лицензирована по MIT и доступна по адресу https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-Java.