Apache PDFBox: Полный набор инструментов для работы с PDF в Java
Извлечение текста, обработка документов, заполнение форм и многое другое – всё на чистой Java
Что такое Apache PDFBox?
Apache PDFBox – это мощная библиотека с открытым исходным кодом для работы с PDF в Java, позволяющая разработчикам программно создавать, редактировать и извлекать содержимое из PDF-документов. Как одна из самых популярных Java-библиотек для работы с PDF, PDFBox отлично справляется с такими задачами, как извлечение текста из PDF, объединение нескольких PDF-файлов и добавление цифровых подписей, всё это с лёгким API и нулевой стоимостью лицензии. Независимо от того, нужен ли вам парсинг PDF в Java, генерация PDF или соответствие стандарту PDF/A, эта библиотека поддерживает расширенные функции, такие как интеграция с OCR, заполнение форм и конвертация HTML в PDF. Благодаря готовым зависимостям Maven (например, pdfbox-maven) и обширной документации, PDFBox упрощает сложные рабочие процессы, делая его идеальным для корпоративных приложений, автоматизации документов и извлечения данных. По сравнению с альтернативами, такими как iText, Apache PDFBox выделяется своей гибкостью с открытым исходным кодом, активным сообществом и кроссплатформенной совместимостью. Изучите наше руководство по PDFBox, чтобы увидеть примеры кода на Java и раскрыть весь потенциал работы с PDF в Java.
Ключевые преимущества PDFBox:
- Комплексное решение: Возможности как извлечения, так и создания
- Чистая Java: Без нативных зависимостей
- Активная разработка: Поддерживается Apache Software Foundation
- Обширные функции: Извлечение текста, разделение, объединение, подписание
- Поддержка форм: Чтение и заполнение PDF-форм
Идеально подходит для систем управления документами, извлечения контента и автоматизации работы с PDF.
Почему стоит выбрать PDFBox?
- Зрелость: Стабилен с 2002 года с регулярными обновлениями
- Универсальность: Возможности как чтения, так и записи
- Поддержка стандартов: Работает с документами PDF 1.7 и PDF/A
- Сообщество: Большая пользовательская база и обширная документация
- Интеграция: Работает со всеми Java-фреймворками
Установка
PDFBox доступен через Maven Central для лёгкой интеграции:
Maven
org.apache.pdfbox
pdfbox
3.0.0
Gradle
implementation 'org.apache.pdfbox:pdfbox:3.0.0'
Системные требования: Java 8 или новее
Примеры кода
Практические примеры возможностей PDFBox:
Пример 1: Базовое извлечение текста из PDF-документа в Java
Этот пример показывает, как извлечь текст из PDF-документа с сохранением форматирования и структуры. PDFBox предоставляет расширенные возможности извлечения текста, которые сохраняют порядок чтения и работают со сложными макетами.
Результат содержит:
- Структурированное текстовое содержимое
- Постраничное извлечение
- Сохранение базового форматирования
Пример 2: Создание PDF-документа с нуля в Java
PDFBox отлично справляется как с чтением, так и с созданием PDF. Этот пример демонстрирует создание нового PDF-документа с текстом и базовым форматированием.
Пример 3: Добавление верхних и нижних колонтитулов к страницам PDF в Java
PDFBox предоставляет комплексную поддержку добавления верхних и нижних колонтитулов к страницам PDF из вашего Java-приложения. Следующий пример кода показывает, как этого добиться с помощью API PDFBox для Java.
Расширенные возможности
PDFBox поддерживает профессиональную обработку PDF:
- Извлечение изображений: Доступ к встроенным изображениям:
Извлечение изображений
PDDocument document = PDDocument.load(new File("document.pdf")); for (PDPage page : document.getPages()) { PDResources resources = page.getResources(); for (COSName name : resources.getXObjectNames()) { PDXObject xobject = resources.getXObject(name); if (xobject instanceof PDImageXObject) { BufferedImage image = ((PDImageXObject) xobject).getImage(); // Обработка изображения } } }
- Разделение документов: Разделение PDF на несколько файлов:
Разделение PDF
Splitter splitter = new Splitter(); List
pages = splitter.split(document); for (int i = 0; i < pages.size(); i++) { pages.get(i).save("страница-" + (i+1) + ".pdf"); } - Шифрованные PDF: Работа с защищёнными паролем файлами:
Шифрованный PDF
String password = "secure123"; FileInputStream fis = new FileInputStream("encrypted.pdf"); PDDocument doc = PDDocument.load(fis, password);
PDFBox vs iText
Вот 5 ключевых различий между PDFBox и iText:
- Лицензия: PDFBox имеет лицензию Apache (открытый исходный код), тогда как iText требует коммерческой лицензии для большинства случаев использования
- Фокус возможностей: PDFBox предлагает сбалансированные функции чтения/записи, тогда как iText специализируется на генерации PDF
- Производительность: iText обычно быстрее в создании документов, тогда как PDFBox лучше в извлечении текста
- Сообщество: PDFBox имеет более широкое распространение как открытый исходный код, тогда как iText предлагает профессиональную поддержку
- Сценарии использования: PDFBox идеален для анализа и базовой обработки, тогда как iText лучше подходит для массовой генерации PDF
Заключение
Apache PDFBox предоставляет комплексную обработку PDF для Java-разработчиков. Идеально подходит для:
- Извлечения контента: Получение текста и данных из PDF
- Автоматизации документов: Генерация отчётов и форм
- Управления документами: Разделение, объединение и преобразование PDF
- Обработки форм: Чтение и заполнение интерактивных форм
Благодаря открытому исходному коду и обширному набору функций, PDFBox является основным выбором для Java-ориентированной обработки PDF.
Похожие Продукты
- Apache POI XWPF | Java API с открытым исходным кодом для создания и изменения файлов DOCX
- DocX | Открытый исходный код .NET API для создания и изменения файлов DOCX
- Docx4J | Открытый исходный код Java API для создания и изменения файлов DOC и DOCX
- ExcelDataReader | API .NET с открытым исходным кодом для чтения документов XLS, XLSX, CSV и электронных таблиц
- FileFormat.Cells | Создание и обновление файлов Excel с помощью C# .NET