ITPub博客

首页 > 应用开发 > Java > Java 在 PDF 中绘制形状

Java 在 PDF 中绘制形状

原创 Java 作者:Jazzz 时间:2020-07-10 15:31:31 0 删除 编辑

在我们编辑PDF文档的过程中,有时候需要在文档中添加一些如多边形、矩形、椭圆形之类的图形,而Free Spire PDF for Java 则正好可以帮助我们在Java程序中通过代码在PDF文档中绘制形状,以及设置形状边线颜色和填充色。


Jar包导入

方法一:下载 包并解压缩,然后将lib文件夹下 的Spire.Pdf.jar包 作为依赖项导入 到Java应用程序中

方法二: 直接通过Maven仓库安装JAR包, 配置pom.xml文件 的代码如下:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf.free</artifactId>
        <version>2.6.3</version>
    </dependency>
</dependencies>


J ava 代码

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);//创建Rectangle2D对象,并指定图形在PDF页面中的大小、位置
        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);
    }
}



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69968349/viewspace-2703768/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-03-25

  • 博文量
    26
  • 访问量
    16646