Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1012197
  • 博文数量: 91
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 894
  • 用 户 组: 普通用户
  • 注册时间: 2017-10-27 10:00
  • 认证徽章:
文章分类

全部博文(91)

文章存档

2019年(37)

2018年(45)

2017年(9)

我的朋友

分类: Java

2019-07-19 10:31:28

本篇文档将介绍通过Java编程在PDF文档中绘制图形的方法。包括绘制矩形、椭圆形、不规则多边形、线条、弧线、曲线、扇形等等。针对以下方法中提供的思路,也可以自行变换图形设计思路,如菱形、梯形或者组合图形等。

使用工具:Free Spire.PDF for Java V2.2.2(免费版)

Jar文件导入:

方法1:可通过官网下载jar文件包。下载后,解压文件,并将lib文件夹下的Spire.Pdf.jar文件导入java程序。参考如下导入效果:


方法2:可通过maven仓库安装导入,参考导入方法


Java代码示例(供参考)

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

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

  5. public class DrawShapes {
  6.     public static void main(String[]args){
  7.         //创建PDF文档,并添加一页
  8.         PdfDocument pdf = new PdfDocument();
  9.         PdfPageBase page = pdf.appendPage();

  10.         //创建画笔、画刷
  11.         PdfPen pen =new PdfPen(new PdfRGBColor(Color.black),0.3);
  12.         PdfBrush brush= PdfBrushes.getGreenYellow();

  13.         //绘制矩形
  14.         Rectangle2D.Float rect1 = new Rectangle2D.Float(0, 20, 120, 50);//创建Rectangle2D对象,并指定图形在PDF页面中的大小、位置
  15.         PdfLinearGradientBrush linearGradientBrush = new PdfLinearGradientBrush(rect1,new PdfRGBColor(Color.PINK),new PdfRGBColor(Color.YELLOW),PdfLinearGradientMode.Horizontal);//填充图形颜色
  16.         page.getCanvas().drawRectangle(linearGradientBrush, rect1);//绘制矩形到页面

  17.         //绘制椭圆
  18.         Point centerStart= new Point(205,45);
  19.         Point centerEnd= new Point(205,45);
  20.         PdfRadialGradientBrush radialGradientBrush = new PdfRadialGradientBrush(centerStart,0,centerEnd,60,new PdfRGBColor(Color.white),new PdfRGBColor(Color.cyan));
  21.         Rectangle2D.Float rect2= new Rectangle2D.Float(180, 20, 50, 50);
  22.         page.getCanvas().drawEllipse(radialGradientBrush,rect2);

  23.         //绘制多边形
  24.         Point p1=new Point(290,70);
  25.         Point p2=new Point(310,45);
  26.         Point p3=new Point(325,60);
  27.         Point p4=new Point(340,20);
  28.         Point p5=new Point(370,70);
  29.         Point[] points = {p1, p2, p3, p4, p5};
  30.         page.getCanvas().drawPolygon(pen,brush, points);

  31.         //绘制弧形
  32.         float startAngle = 0;
  33.         float sweepAngle = 270;
  34.         Rectangle2D.Float rect3= new Rectangle2D.Float(0, 110, 50, 50);
  35.         page.getCanvas().drawArc(pen, rect3, startAngle, sweepAngle);

  36.         //绘制扇形
  37.         Rectangle2D.Float rect4= new Rectangle2D.Float(70, 110, 50, 50);
  38.         page.getCanvas().drawPie(pen, rect4, startAngle, sweepAngle);

  39.         //绘制两条垂直交叉的直线
  40.         Point pStart1=new Point(205,110);
  41.         Point pEnd1=new Point(205,160);
  42.         page.getCanvas().drawLine(pen, pStart1, pEnd1);
  43.         Point pStart2=new Point(180,135);
  44.         Point pEnd2=new Point(230,135);
  45.         page.getCanvas().drawLine(pen, pStart2, pEnd2);

  46.         //绘制贝塞尔曲线
  47.         Point startPoint = new Point(290, 135);
  48.         Point firstControlPoint = new Point(330, 70);
  49.         Point secondControlPoint = new Point(330, 200);
  50.         Point endPoint = new Point(370, 135);
  51.         page.getCanvas().drawBezier(pen, startPoint, firstControlPoint, secondControlPoint, endPoint);

  52.         //保存文档
  53.         pdf.saveToFile("DrawShapes.pdf",FileFormat.PDF);
  54.     }
  55. }

完成代码后,运行程序,生成文档。(如下图)


(本文完)
阅读(66461) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册