Вопрос или проблема
Я совершенно нов в генерации или отображении PDF. Я работаю над приложением, чтобы заменить iText (из-за изменения лицензии) и создать свои RESTful эндпоинты, используя любые API для PDF на Java. Библиотека должна уметь конвертировать изображения и… другие форматы в PDF.
- Программно считывать/заполнять данные из PDF, а также объединять.
- Также, если мы сможем хостить это самостоятельно, это будет наилучший выбор. Не могли бы вы предоставить некоторую информацию по этому поводу?
Я могу порекомендовать PDFBox от Apache. Так как я предполагаю, что вы используете Java, раз переходите от iText.
Это позволяет вам
- создавать новые PDF-документы
- манипулировать существующими документами
- объединять два или более существующих PDF в один
- извлекать содержимое из документов
Два месяца назад был выпущен PDFBox 3.0.0-alpha3, так как это программное обеспечение с открытым исходным кодом, у него также есть довольно активное сообщество, которое его дальше развивает и выпускает исправления ошибок.
Ответ или решение
Для генерации PDF-документов в Java существует несколько альтернатив библиотеке iText, особенно учитывая изменения в лицензировании. Одним из наиболее известных и активно развиваемых решений является библиотека Apache PDFBox.
Apache PDFBox
Apache PDFBox – это мощная библиотека для работы с PDF-документами. Она позволяет выполнять широкий спектр операций, включая:
-
Создание новых PDF-документов: Вы можете программно создавать документы, добавляя текст, изображения и другие элементы.
-
Манипулирование существующими документами: PDFBox позволяет изменять содержимое уже созданных PDF-файлов. Вы можете добавлять или удалять страницы, изменять текст и изображения.
-
Слияние PDF-документов: Эта библиотека позволяет объединять несколько PDF-файлов в один, что может быть полезно для подготовки отчетов или других документов.
-
Извлечение содержимого: С её помощью можно извлекать текст и изображения из существующих PDF-документов.
Преимущества PDFBox
-
Open Source: PDFBox является проектом с открытым исходным кодом, что позволяет вам свободно использовать и модифицировать его по вашим требованиям.
-
Активное сообщество: Как упоминалось ранее, в апреле 2023 года была выпущена версия PDFBox 3.0.0-alpha3, что свидетельствует о постоянном развитии и поддержке библиотеки.
-
Поддержка хостинга: Библиотеку можно легко интегрировать в ваше приложение и хостить локально, что соответствует вашему требованию.
Пример использования
Вот простой пример, как можно использовать PDFBox для создания PDF-документа и добавления в него изображения:
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.PDImageXObject;
import java.io.IOException;
public class CreatePDF {
public static void main(String[] args) {
try (PDDocument document = new PDDocument()) {
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDImageXObject image = PDImageXObject.createFromFile("path_to_image.jpg", document);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.drawImage(image, 100, 700); // Положение изображения на странице
contentStream.close();
document.save("output.pdf");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Заключение
С учетом вашего запроса на замену iText для генерации и манипулирования PDF-документами, Apache PDFBox является отличным вариантом. Эта библиотека покроет все ваши требования и придаст вашему приложению большую гибкость и функциональность. Рекомендуем ознакомиться с официальной документацией PDFBox для более глубокого понимания возможностей библиотеки и начала работы.