Добавление векторной графики в файлы PDF является распространённой задачей при создании отчётов, счетов и интерактивных документов. Conholdate.Total for Java — мощный SDK, упрощающий работу с PDF на стороне сервера. В этом руководстве вы узнаете, как вставлять прямоугольники, эллипсы и линии в PDF с помощью объекта Graph, настраивать их внешний вид и учитывать вопросы производительности, всё это с понятными примерами кода на Java.
Шаги по добавлению фигур в PDF на Java
- Добавить репозиторий 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>
- Создать 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();
- Создание объектов фигур - Сначала создайте объект
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);
- Сохранить обновлённый 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+ и не требует дополнительных нативных библиотек.
- URL для загрузки: Conholdate.Total for Java Release
- Документация: Подробные инструкции по использованию доступны в официальной документации.
- Лицензия: Получите временную лицензию на странице временной лицензии или просмотрите полное ценообразование на странице цен.
Ключевые особенности и обзор
Добавление фигур в 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‑файла.
