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

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

  1. Добавить репозиторий Maven и зависимость - Включите репозиторий Maven Conholdate и зависимость conholdate-total в ваш pom.xml. Это делает доступными классы SDK, такие как Document, Page и Graph.
    <repositories>
        <repository>
            <id>conholdate-repo</id>
            <name>Conholdate Maven Repository</name>
            <url>https://repository.conholdate.com/repo/</url>
        </repository>
    </repositories>
    
  1. Создать PDF‑документ и страницу – создайте экземпляр Document и добавьте страницу в его коллекцию страниц. Класс задокументирован в справочнике API.
// Create Document instance
Document doc = new Document();
// Add page to pages collection of PDF file
com.aspose.pdf.Page page = doc.getPages().add();
  1. Создание объектов фигур - Сначала создайте объект Graph, затем создайте прямоугольники, эллипсы или линии и добавьте их в его коллекцию фигур. Установите позицию, размер и визуальные атрибуты через GraphInfo каждой фигуры.
    // Create Graph instance
    com.aspose.pdf.drawing.Graph graph = new com.aspose.pdf.drawing.Graph(100, 600);
    

// Rectangle com.aspose.pdf.drawing.Rectangle rect = new com.aspose.pdf.drawing.Rectangle(100, 100, 170, 120); graph.getShapes().add(rect);

// Ellipse com.aspose.pdf.drawing.Ellipse ellipse = new com.aspose.pdf.drawing.Ellipse(300, 150, 150, 100); ellipse.getGraphInfo().setColor(com.aspose.pdf.Color.getGreen()); ellipse.getGraphInfo().setLineWidth(1.5f); graph.getShapes().add(ellipse);

// Line com.aspose.pdf.drawing.Line line = new com.aspose.pdf.drawing.Line((new float[]{100, 300, 400, 300})); line.getGraphInfo().setColor(com.aspose.pdf.Color.getRed()); line.getGraphInfo().setLineWidth(3); graph.getShapes().add(line);

<!--[CODE_SNIPPET_END]-->

4. **Добавить фигуры на страницу** - Отдельные фигуры находятся в коллекции фигур объекта `Graph`. Добавьте сам объект `Graph` в коллекцию абзацев страницы, чтобы все содержащиеся в нём фигуры отобразились на этой странице.  
<!--[CODE_SNIPPET_START]-->
```java
// Add graph object to paragraphs collection of page instance
page.getParagraphs().add(graph);
  1. Сохранить обновлённый PDF - После того как граф (со всеми его фигурами) был добавлен на страницу, сохраните документ в новый файл.
// Save PDF file
doc.save("Shapes.pdf");

Добавление фигур в PDF на Java — полный пример кода

Следующий пример объединяет все шаги в одну готовую к запуску программу.

import com.aspose.pdf.Document;
import com.aspose.pdf.Color;

public class AddShapesDemo {
    public static void main(String[] args) throws Exception {
        // Create Document instance
        Document doc = new Document();
        // Add page to pages collection of PDF file
        com.aspose.pdf.Page page = doc.getPages().add();

// Create Graph instance
        com.aspose.pdf.drawing.Graph graph = new com.aspose.pdf.drawing.Graph(100, 600);

// Create Rectangle instance
        com.aspose.pdf.drawing.Rectangle rect = new com.aspose.pdf.drawing.Rectangle(100, 100, 170, 120);
        // Add rectangle object to shapes collection of Graph object
        graph.getShapes().add(rect);

// Create ellipse
        com.aspose.pdf.drawing.Ellipse ellipse = new com.aspose.pdf.drawing.Ellipse(300, 150, 150, 100);
        ellipse.getGraphInfo().setColor(com.aspose.pdf.Color.getGreen());
        ellipse.getGraphInfo().setLineWidth(1.5f);
        // Add ellipse object to shapes collection of Graph object
        graph.getShapes().add(ellipse);

// Create line
        com.aspose.pdf.drawing.Line line = new com.aspose.pdf.drawing.Line((new float[]{100, 300, 400, 300}));
        line.getGraphInfo().setColor(com.aspose.pdf.Color.getRed());
        line.getGraphInfo().setLineWidth(3);
        // Add line object to shapes collection of Graph object
        graph.getShapes().add(line);

// Add graph object to paragraphs collection of page instance
        page.getParagraphs().add(graph);

// Save PDF file
        doc.save("Shapes.pdf");
    }
}

Примечание: Этот пример кода демонстрирует основную функциональность. Прежде чем использовать его в вашем проекте, убедитесь, что путь к выходному файлу (Shapes.pdf) обновлен в соответствии с фактическим местом назначения, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если возникнут проблемы, обратитесь к официальной документации или свяжитесь с службой поддержки для получения помощи.

Установка и настройка в Java

Чтобы начать использовать Conholdate.Total for Java, загрузите последнюю версию с официального сайта и добавьте ранее показанную зависимость Maven. SDK работает на любой среде выполнения Java 8+ и не требует дополнительных нативных библиотек.

Ключевые особенности и обзор

Добавление фигур в PDF на Java с Conholdate.Total

Conholdate.Total for Java предоставляет единый API для создания и редактирования PDF‑контента. Функциональность рисования фигур работает с векторной графикой через объект Graph и его коллекцию фигур, обеспечивая чёткость добавленных элементов при любом уровне масштабирования. Вы можете рисовать базовые примитивы (прямоугольник, эллипс, линия) и комбинировать несколько из них в одном объекте Graph перед размещением на странице.

Возможности Conholdate.Total, важные для этой задачи

  • Cross‑platform compatibility: Работает на серверах Windows, Linux и macOS.
  • High‑performance rendering: Фигуры рендерятся с использованием того же движка, который генерирует нативный PDF‑контент, избегая растеризации.
  • Full control over appearance: Устанавливайте цвет обводки и толщину линии для каждой фигуры через объект GraphInfo.
  • Grouped graphics: Добавляйте несколько фигур в один объект Graph, чтобы их можно было позиционировать и управлять ими совместно на странице.

Настройка свойств фигур для оптимального рендеринга

При добавлении фигур учитывайте следующие свойства, чтобы достичь желаемого визуального результата:

  • Позиция и размер: Конструкторы фигур принимают координаты и размеры в пунктах, e.g. new Rectangle(100, 100, 170, 120) или new Ellipse(300, 150, 150, 100).
  • Размещение графика: Объект Graph позиционируется с помощью new Graph(width, height) и добавляется на страницу через page.getParagraphs().add(graph).
  • Цвета: Используйте класс com.aspose.pdf.Color (например Color.getGreen() или Color.getRed()) и задавайте его для фигуры через shape.getGraphInfo().setColor(...).
  • Толщина линии: Устанавливается с помощью shape.getGraphInfo().setLineWidth(...), измеряется в пунктах; значение 1 соответствует 1/72 дюйма.
  • Линии: Фигура Line создаётся из массива координат, e.g. new Line(new float[]{100, 300, 400, 300}), представляющего начальную и конечную точки линии.

Пример настройки внешнего вида фигуры:

ellipse.getGraphInfo().setColor(com.aspose.pdf.Color.getGreen());
ellipse.getGraphInfo().setLineWidth(1.5f);

Соображения по производительности при добавлении фигур в PDF

Добавление большого количества векторных объектов может увеличить время обработки и использование памяти. Следуйте этим рекомендациям:

  • Batch Drawing: Группируйте связанные фигуры в один объект Graph перед добавлением этого графа на страницу.
  • Reuse Objects: Если вам нужны одинаковые фигуры на нескольких страницах, переиспользуйте логику конфигурации фигур вместо её дублирования.
  • Avoid Over‑Scaling: Определяйте фигуры в окончательном размере отображения, чтобы избежать дорогостоящих растровых преобразований.
  • Dispose Resources: Сохраните и быстро освободите Document, как только все фигуры будут добавлены.

Заключение

Conholdate.Total for Java предоставляет Java-разработчикам простой способ добавлять фигуры в PDF‑документы, позволяя создавать насыщенные интерактивные отчёты и счета‑фактуры. Следуя шагам, рекомендациям по настройке и рекомендациям по производительности, изложенным в этом руководстве, вы сможете уверенно интегрировать векторную графику в ваш PDF‑рабочий процесс. Не забудьте оформить правильную лицензию для использования в продакшене; временная лицензия доступна для оценки, а полные сведения о ценах указаны на странице с ценами.

Часто задаваемые вопросы

Нужно ли создавать объект Graph для каждой формы?
Нет. Один объект Graph может содержать несколько фигур — прямоугольники, эллипсы и линии могут быть добавлены в одну и ту же коллекцию фигур графа до того, как граф будет добавлен на страницу.

Можно ли добавить фигуры на конкретную страницу многостраничного PDF?
Да. Получите нужную страницу из doc.getPages() и вызовите page.getParagraphs().add(graph) для этого конкретного экземпляра Page.

В какие форматы файлов я могу экспортировать после добавления фигур?
Метод Document.save() из Conholdate.Total for Java может записывать в PDF, а также в другие форматы, поддерживаемые SDK. Используйте doc.save("Shapes.pdf"), чтобы сохранить результат в виде стандартного PDF‑файла.