Добавление векторной графики в файлы PDF является распространённой задачей при создании отчётов, счетов‑фактур и интерактивных документов. Conholdate.Total for Java — мощный SDK, упрощающий работу с PDF на стороне сервера. В этом руководстве вы узнаете, как вставлять прямоугольники, эллипсы и линии в PDF, настраивать их внешний вид и учитывать вопросы производительности, используя понятные примеры кода на Java.
Шаги по добавлению фигур в PDF на Java
- Добавить Maven‑репозиторий и зависимость — включите Maven‑репозиторий Conholdate и зависимость
conholdate-totalв вашpom.xml. Это делает доступными классы SDK, такие какPdfDocumentиShapeFactory.<repositories> <repository> <id>conholdate-repo</id> <name>Conholdate Maven Repository</name> <url>https://repository.conholdate.com/repo/</url> </repository> </repositories>
Загрузить PDF‑документ — создайте экземпляр
PdfDocumentи откройте целевой PDF‑файл. Класс задокументирован в API‑справочнике.PdfDocument pdf = new PdfDocument(); pdf.open("input.pdf");Создание объектов Shape - Используйте
ShapeFactoryдля создания прямоугольников, эллипсов или линий. Установите позицию, размер и визуальные атрибуты.// Rectangle Shape rect = ShapeFactory.createRectangle(100, 150, 200, 100); rect.setFillColor(Color.BLUE); rect.setStrokeColor(Color.BLACK); rect.setLineWidth(2);
// Ellipse Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100); ellipse.setFillColor(Color.GREEN); ellipse.setStrokeColor(Color.DARK_GRAY); ellipse.setLineWidth(1.5f);
// Line Shape line = ShapeFactory.createLine(100, 300, 500, 300); line.setStrokeColor(Color.RED); line.setLineWidth(3);
Добавить фигуры на страницу - Получите нужную страницу из документа и добавьте каждую фигуру в её графическую коллекцию.
Page page = pdf.getPages().get_Item(0); // first page page.getGraphics().addShape(rect); page.getGraphics().addShape(ellipse); page.getGraphics().addShape(line);Сохранить обновлённый PDF - После того как все фигуры добавлены, сохраните документ в новый файл.
pdf.save("output.pdf"); pdf.close();
Добавление фигур в PDF на Java — полный пример кода
В следующем примере все шаги объединены в одну готовую к запуску программу.
import com.conholdate.total.pdf.*;
import com.conholdate.total.pdf.shapes.*;
import java.awt.Color;
public class AddShapesDemo { public static void main(String[] args) throws Exception { // Инициализировать PDF документ PdfDocument pdf = new PdfDocument(); pdf.open(“input.pdf”);
// Create rectangle
Shape rectangle = ShapeFactory.createRectangle(100, 150, 200, 100);
rectangle.setFillColor(Color.BLUE);
rectangle.setStrokeColor(Color.BLACK);
rectangle.setLineWidth(2);
// Создать эллипс
Shape ellipse = ShapeFactory.createEllipse(350, 150, 150, 100);
ellipse.setFillColor(Color.GREEN);
ellipse.setStrokeColor(Color.DARK_GRAY);
ellipse.setLineWidth(1.5f);
// Создать линию Shape line = ShapeFactory.createLine(100, 300, 500, 300); line.setStrokeColor(Color.RED); line.setLineWidth(3);
// Добавить фигуры на первую страницу
Page page = pdf.getPages().get_Item(0);
page.getGraphics().addShape(rectangle);
page.getGraphics().addShape(ellipse);
page.getGraphics().addShape(line);
// Save the result
pdf.save("output.pdf");
pdf.close();
}
}
Примечание: Этот пример кода демонстрирует базовую функциональность. Прежде чем использовать его в вашем проекте, убедитесь, что обновили пути к файлам (
input.pdf,output.pdf) в соответствии с фактическим расположением ваших файлов, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если возникнут проблемы, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.
Installation and Setup in Java
Чтобы начать использовать Conholdate.Total for Java, загрузите последнюю версию с официального сайта и добавьте Maven‑зависимость, показанную ранее. SDK работает на любой среде выполнения Java 8+ и не требует дополнительных нативных библиотек.
- URL загрузки: Conholdate.Total for Java Release
- Документация: Подробные инструкции по использованию доступны в официальной документации.
- Лицензия: Получите временную лицензию на странице временной лицензии или просмотрите полное ценообразование на странице цен.
Key Features and Overview
Add Shapes to PDF in Java with Conholdate.Total
Conholdate.Total for Java предоставляет единый API для создания и редактирования PDF‑контента. Функциональность рисования фигур работает с векторной графикой, обеспечивая чёткость добавленных элементов при любом уровне масштабирования. Вы можете рисовать базовые примитивы (прямоугольник, эллипс, линия), а также сложные контуры.
Conholdate.Total функции, важные для этой задачи
- Cross‑platform compatibility: Работает на серверах Windows, Linux и macOS.
- High‑performance rendering: Фигуры рендерятся с использованием того же движка, который генерирует нативный PDF‑контент, избегая растеризации.
- Full control over appearance: Устанавливайте цвета заливки, цвета контура, толщину линий, непрозрачность и режимы blend.
- Layered graphics: Добавляйте фигуры в определённые слои или группы для более простого последующего редактирования.
Настройка свойств фигур для оптимального отображения
При добавлении фигур учитывайте следующие свойства, чтобы достичь желаемого визуального результата:
- Позиция и размер: Используйте абсолютные координаты (в пунктах) или проценты относительно размера страницы.
- Цвета: SDK принимает объекты
java.awt.Color. Для прозрачности используйтеnew Color(r, g, b, alpha). - Ширина линии: Измеряется в пунктах; значение
1равно 1/72 дюйма. - Непрозрачность и режим наложения: Регулируются с помощью
setOpacity(float)иsetBlendMode(BlendMode). - Вращение и наклон: Применяйте трансформации через
setRotation(double)илиsetSkew(double, double)для сложных макетов.
Пример установки расширенных свойств:
ellipse.setOpacity(0.7f);
ellipse.setBlendMode(BlendMode.MULTIPLY);
ellipse.setRotation(45);
Соображения по производительности при добавлении фигур в PDF
Добавление большого количества векторных объектов может увеличить время обработки и использование памяти. Следуйте этим рекомендациям:
- Пакетная отрисовка: Группировать связанные фигуры в один графический контейнер перед добавлением их на страницу.
- Повторное использование объектов: Если вам нужны одинаковые фигуры на нескольких страницах, клонируйте существующую фигуру вместо создания новых экземпляров.
- Избегайте пере‑масштабирования: Определяйте фигуры в окончательном размере отображения, чтобы избежать дорогих растровых преобразований.
- Освобождайте ресурсы: Закрывайте
PdfDocumentсразу, чтобы освободить нативные ресурсы.
Заключение
Conholdate.Total for Java предоставляет Java‑разработчикам простой способ добавлять фигуры в PDF‑документы, позволяя создавать насыщенные интерактивные отчёты и счета‑фактуры. Следуя шагам, советам по конфигурации и рекомендациям по производительности, изложенным в этом руководстве, вы сможете уверенно интегрировать векторную графику в ваш PDF‑рабочий процесс. Не забудьте оформить надлежащую лицензию для использования в продакшн; временная лицензия доступна для оценки, а полная информация о ценах указана на странице цен.
Часто задаваемые вопросы
Как добавить пользовательский шрифт к фигурам в PDF?
Вы можете встроить шрифт TrueType, используя pdf.getFonts().addFont("MyFont.ttf"), а затем назначить его фигуре с помощью setFont(myFont). SDK гарантирует, что шрифт будет встроен в окончательный PDF.
Можно ли вставить фигуры в существующий PDF, не теряя существующее содержимое?
Да. Открытие PDF с помощью PdfDocument.open() сохраняет все существующие страницы и объекты. Добавление фигур в коллекцию графики страницы лишь дополняет страницу; оно не перезаписывает существующее содержимое.
Какие форматы файлов я могу экспортировать после добавления фигур?
Conholdate.Total for Java поддерживает сохранение в PDF, PDF/A, PDF/X, а также в графические форматы, такие как PNG, JPEG, и BMP. Используйте pdf.save("output.pdf") или pdf.save("output.png", ImageSaveOptions.Png) по мере необходимости.
