Добавление векторной графики в файлы PDF является распространённой задачей при создании отчётов, счетов‑фактур и интерактивных документов. Conholdate.Total for Java — мощный SDK, упрощающий работу с PDF на стороне сервера. В этом руководстве вы узнаете, как вставлять прямоугольники, эллипсы и линии в PDF, настраивать их внешний вид и учитывать вопросы производительности, используя понятные примеры кода на Java.

Шаги по добавлению фигур в PDF на Java

  1. Добавить 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>
    
  1. Загрузить PDF‑документ — создайте экземпляр PdfDocument и откройте целевой PDF‑файл. Класс задокументирован в API‑справочнике.

    PdfDocument pdf = new PdfDocument();
    pdf.open("input.pdf");
    
  2. Создание объектов 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);

  1. Добавить фигуры на страницу - Получите нужную страницу из документа и добавьте каждую фигуру в её графическую коллекцию.

    Page page = pdf.getPages().get_Item(0); // first page
    page.getGraphics().addShape(rect);
    page.getGraphics().addShape(ellipse);
    page.getGraphics().addShape(line);
    
  2. Сохранить обновлённый 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+ и не требует дополнительных нативных библиотек.

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) по мере необходимости.