Когда я недавно редактировал документ PDF, мне нужно было добавить в документ некоторые графические объекты, такие как многоугольники, прямоугольники, эллипсы и т. Д. После поиска информации и тестирования я обнаружил, что Free Spire PDF для Java может помочь мне в приложениях Java. Завершите эту операцию.

Сегодня я поделюсь с вами кодом Java, который использовал для рисования фигур в документах PDF, а также для установки цвета кромки фигуры и цвета заливки.

Конфигурация среды


Установите бесплатный пакет Spire.Pdf.jar через хранилище Maven и настройте код файла pom.xml следующим образом:

<repositories>
        <repository>
            <id>com.e-iceblue</id>
            <name>e-iceblue</name>
            <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
        </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>2.6.3</version>
    </dependency>
</dependencies>

Java-код


import com.spire.pdf.*;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Rectangle2D;

public class DrawShapes {
    public static void main(String[]args){
        //Создать PDF документ и добавить страницу
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.appendPage();

        //Создать кисти
        PdfPen pen =new PdfPen(new PdfRGBColor(Color.black),0.3);
        PdfBrush brush= PdfBrushes.getGreenYellow();

        //Нарисовать прямоугольник
        Rectangle2D.Float rect1 = new Rectangle2D.Float(0, 20, 120, 50);
        PdfLinearGradientBrush linearGradientBrush = new PdfLinearGradientBrush(rect1,new PdfRGBColor(Color.pink),new PdfRGBColor(Color.YELLOW),PdfLinearGradientMode.Horizontal);
        page.getCanvas().drawRectangle(linearGradientBrush, rect1);

        //Рисовать эллипс
        Point centerStart= new Point(205,45);
        Point centerEnd= new Point(205,45);
        PdfRadialGradientBrush radialGradientBrush = new PdfRadialGradientBrush(centerStart,0,centerEnd,60,new PdfRGBColor(Color.white),new PdfRGBColor(Color.cyan));
        Rectangle2D.Float rect2= new Rectangle2D.Float(180, 20, 50, 50);
        page.getCanvas().drawEllipse(radialGradientBrush,rect2);

        //Рисовать многоугольник
        Point p1=new Point(290,70);
        Point p2=new Point(310,45);
        Point p3=new Point(325,60);
        Point p4=new Point(340,20);
        Point p5=new Point(370,70);
        Point[] points = {p1, p2, p3, p4, p5};
        page.getCanvas().drawPolygon(pen,brush, points);

        //Нарисовать дугу
        float startAngle = 0;
        float sweepAngle = 270;
        Rectangle2D.Float rect3= new Rectangle2D.Float(0, 110, 50, 50);
        page.getCanvas().drawArc(pen, rect3, startAngle, sweepAngle);

        //Рисовать сектор
        Rectangle2D.Float rect4= new Rectangle2D.Float(70, 110, 50, 50);
        page.getCanvas().drawPie(pen, rect4, startAngle, sweepAngle);

        //Нарисуйте две прямые линии, пересекающие перпендикулярно
        Point pStart1=new Point(205,110);
        Point pEnd1=new Point(205,160);
        page.getCanvas().drawLine(pen, pStart1, pEnd1);
        Point pStart2=new Point(180,135);
        Point pEnd2=new Point(230,135);
        page.getCanvas().drawLine(pen, pStart2, pEnd2);

        //Нарисуйте кривую Безье
        Point startPoint = new Point(290, 135);
        Point firstControlPoint = new Point(330, 70);
        Point secondControlPoint = new Point(330, 200);
        Point endPoint = new Point(370, 135);
        page.getCanvas().drawBezier(pen, startPoint, firstControlPoint, secondControlPoint, endPoint);

        //Сохранить документ
        pdf.saveToFile("DrawShapes.pdf",FileFormat.PDF);
    }
}

image