Как извлечь артефакты PDF с помощью GroupDocs.Watermark в Java
Извлечение артефактов PDF необходимо, когда нужно проводить аудит скрытых метаданных, применять политики безопасности или интегрировать сведения о документе в более крупные рабочие процессы. В этом руководстве вы узнаете как извлечь PDF артефакты с помощью GroupDocs.Watermark для Java, а также увидите, как добавить водяной знак в PDF на Java и получить доступ к скрытым метаданным PDF. Мы пройдём через настройку, инициализацию и шаги итерации, а затем завершим практическими советами, которые можно применить сразу.
Быстрые ответы
- Какой первый шаг? Добавьте зависимость Maven GroupDocs.Watermark и создайте экземпляр
Watermarker. - Какой класс даёт доступ к страницам PDF? Класс
PdfContentпредоставляет методgetPages()для итерации артефактов на уровне страниц. - Можно ли извлечь метаданные из PDF‑файла на 300 страниц? Да — GroupDocs.Watermark обрабатывает документы более 500 страниц без загрузки всего файла в память.
- Нужна ли лицензия для разработки? Бесплатная пробная версия подходит для тестирования; для продакшн‑использования требуется коммерческая лицензия.
- Можно ли добавить водяной знак во время извлечения артефактов? Абсолютно — используйте
Watermarker.add()после завершения итерации артефактов.
Что такое «как извлечь pdf»?
Извлечение артефактов PDF означает чтение скрытых объектов, таких как метаданные, аннотации и пользовательские потоки данных, встроенных в файл PDF. Эти невидимые элементы могут содержать важную информацию о создании документа, авторстве или встроенных ресурсах, делая извлечение артефактов критически важным шагом в проверках соответствия, аудите безопасности и автоматизированных конвейерах обработки документов.
Почему стоит использовать GroupDocs.Watermark для извлечения артефактов PDF?
GroupDocs.Watermark поддерживает более 30 форматов ввода и вывода и может обрабатывать многосотенные PDF при потреблении памяти менее 100 МБ благодаря потоковой архитектуре. Библиотека также предоставляет встроенные методы для добавления водяных знаков, что делает её универсальным решением как для извлечения, так и для защиты документов.
Предварительные требования
- GroupDocs.Watermark для Java — Версия 24.11 (или новее).
- Maven, установленный на вашей машине разработки.
- Базовые знания Java и IDE, совместимая с Java (IntelliJ IDEA или Eclipse).
Как извлечь артефакты PDF пошагово
Загрузите ваш PDF, получите объект PdfContent и пройдитесь по артефактам каждой страницы. Прямой ответ на основной вопрос:
Загрузите PDF с помощью new Watermarker("sample.pdf"), вызовите watermarker.getPdfContent() для получения объекта PdfContent, затем пройдитесь по pdfContent.getPages() и page.getArtifacts(), чтобы прочитать детали каждого артефакта. Этот подход работает с PDF любого размера и возвращает метаданные, такие как дата создания, автор и пользовательские XMP‑потоки.
Шаг 1: Добавьте зависимость Maven
Добавьте следующий фрагмент в ваш pom.xml. Это подтянет полную библиотеку GroupDocs.Watermark и её транзитивные зависимости.
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/watermark/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-watermark</artifactId>
<version>24.11</version>
</dependency>
</dependencies>
Шаг 2: Инициализируйте класс Watermarker
Класс Watermarker является точкой входа для всех операций с документами. Он загружает файл и подготавливает внутренние структуры для чтения и записи.
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.contents.PdfArtifact;
import com.groupdocs.watermark.contents.PdfContent;
import com.groupdocs.watermark.options.PdfLoadOptions;
// Initialize Watermarker with load options
PdfLoadOptions loadOptions = new PdfLoadOptions();
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/document.pdf", loadOptions);
Шаг 3: Получите PDF‑контент
PdfContent даёт программный доступ к страницам, артефактам и базовым потокам.
PdfLoadOptions loadOptions = new PdfLoadOptions();
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/document.pdf", loadOptions);
Шаг 4: Переберите артефакты каждой страницы
Page представляет отдельную страницу PDF в документе.Artifact представляет скрытый элемент, такой как метаданные или встроенный файл.
Итерируйте pdfContent.getPages(); каждый объект Page раскрывает getArtifacts(), возвращающий коллекцию объектов Artifact. Вы можете читать свойства getName(), getValue() и getType().
PdfContent pdfContent = (PdfContent) watermarker.getContent(PdfContent.class);
Шаг 5: Выведите или обработайте артефакты
Для демонстрации мы просто выводим имя и значение каждого артефакта. В реальном приложении вы можете сохранять их в базе данных или передавать в движок соответствия.
for (int i = 0; i < pdfContent.getPages().size(); i++) {
PdfArtifact[] artifacts = pdfContent.getPages().get_Item(i).getArtifacts();
for (PdfArtifact artifact : artifacts) {
// Access artifact details here, e.g., type or content
System.out.println("Artifact Type: " + artifact.getType());
}
}
Распространённые проблемы и решения
- FileNotFoundException – Убедитесь, что путь к PDF указан абсолютным или правильно относительным к корню проекта.
- Unsupported PDF version – Убедитесь, что используете GroupDocs.Watermark 24.11 или новее; более старые версии могут не поддерживать функции PDF 2.0.
- Memory spikes with very large PDFs – Включите потоковый режим, установив
watermarker.setCacheSize(64)(значение в МБ) перед загрузкой документа.
Практические применения
- Аудит безопасности данных – Сканируйте PDF на наличие скрытых авторов или метаданных создания, которые могут раскрыть конфиденциальную информацию.
- Отслеживание соответствия – Убедитесь, что каждый документ содержит требуемые пользовательские XMP‑теги перед архивированием.
- Интеграция с системами управления документами – Сочетайте извлечение артефактов с автоматическим добавлением водяного знака «Конфиденциально» после проверки.
Советы по производительности
- Обрабатывайте страницы параллельно с помощью
ForkJoinPoolJava, когда работаете с PDF более 200 страниц. - Переиспользуйте один экземпляр
Watermarkerдля пакетных операций, чтобы снизить нагрузку на JVM. - Включите встроенное кэширование (
watermarker.setCacheEnabled(true)), чтобы избежать повторных чтений с диска.
Часто задаваемые вопросы
Q: Что именно считается артефактом PDF?
A: Артефакты — это скрытые объекты, такие как XMP‑метаданные, пользовательские записи в словарях и встроенные файлы, которые не видны в отрисованном PDF, но могут быть получены программно.
Q: Можно ли одновременно извлекать артефакты и добавлять водяной знак в одном запуске?
A: Да — после итерации артефактов вызовите watermarker.add(new TextWatermark("CONFIDENTIAL", new Font(...))), а затем watermarker.save("output.pdf").
Q: Работает ли библиотека с PDF, защищёнными паролем?
A: Абсолютно — передайте пароль в конструктор Watermarker: new Watermarker("secure.pdf", "myPassword").
Q: Какой максимальный размер PDF может обработать GroupDocs.Watermark?
A: Он надёжно обрабатывает PDF до 500 страниц (и более), удерживая потребление памяти ниже 150 МБ благодаря потоковому движку.
Q: Обязательна ли коммерческая лицензия для продакшн‑использования?
A: Да — бесплатная пробная версия позволяет оценить все возможности, но для любого продакшн‑развёртывания требуется действующая лицензия.
Заключение
Теперь у вас есть полностью готовый к продакшн‑использованию процесс как извлечь PDF артефакты с помощью GroupDocs.Watermark в Java. Комбинируя извлечение артефактов с наложением водяных знаков, вы можете построить безопасные, соответствующие требованиям конвейеры обработки документов, которые масштабируются до больших PDF без потери производительности.
Last Updated: 2026-07-25
Tested With: GroupDocs.Watermark 24.11 for Java
Author: GroupDocs
Ресурсы
- GroupDocs.Watermark for Java releases
- Документация
- Справочник API
- Скачать GroupDocs.Watermark for Java
- Репозиторий GitHub
- Бесплатный форум поддержки
- Заявка на временную лицензию