Java 在PDF文档中绘制图形

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

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

Jar****文件导入:

步骤1**:**将安装包中lib文件夹下的两个文件复制到程序中新建的文件夹中(这里在程序中可新建一个文件夹并命名为Lib)

步骤2**:**复制文件后,将两个添加引用到程序:选中这两个jar文件,点击鼠标右键,选择“Build Path” – “Add to Build Path”。完成引用。

 

Java****代码示例(供参考)

1import java.awt.Color; 2import java.awt.Point; 3import java.awt.geom.Rectangle2D; 4 5import com.spire.pdf.FileFormat; 6import com.spire.pdf.PdfDocument; 7import com.spire.pdf.PdfPageBase; 8import com.spire.pdf.graphics.*; 9 10public class DrawShapes { 11 12 public static void main(String[] args) { 13 14 //创建PdfDocument对象 15 PdfDocument doc = new PdfDocument(); 16 17 //添加一页 18 PdfPageBase page = doc.getPages().add(); 19 20 //创建画笔、画刷 21 PdfPen pen =new PdfPen(new PdfRGBColor(Color.black),0.3); 22 PdfBrush brush= PdfBrushes.getGreenYellow(); 23 24 //绘制矩形 25 Rectangle2D.Float rect1 = new Rectangle2D.Float(0, 20, 120, 50);//创建Rectangle2D对象,并指定图形在PDF页面中的大小、位置 26 PdfLinearGradientBrush linearGradientBrush = new PdfLinearGradientBrush(rect1,new PdfRGBColor(Color.PINK),new PdfRGBColor(Color.YELLOW),PdfLinearGradientMode.Horizontal);//填充图形颜色 27 page.getCanvas().drawRectangle(linearGradientBrush, rect1);//绘制矩形到页面 28 29 //绘制椭圆 30 Point centerStart= new Point(205,45); 31 Point centerEnd= new Point(205,45); 32 PdfRadialGradientBrush radialGradientBrush = new PdfRadialGradientBrush(centerStart,0,centerEnd,60,new PdfRGBColor(Color.white),new PdfRGBColor(Color.cyan)); 33 Rectangle2D.Float rect2= new Rectangle2D.Float(180, 20, 50, 50); 34 page.getCanvas().drawEllipse(radialGradientBrush,rect2); 35 36 //绘制多边形 37 Point p1=new Point(290,70); 38 Point p2=new Point(310,45); 39 Point p3=new Point(325,60); 40 Point p4=new Point(340,20); 41 Point p5=new Point(370,70); 42 Point[] points = {p1, p2, p3, p4, p5}; 43 page.getCanvas().drawPolygon(pen,brush, points); 44 45 //绘制弧形 46 float startAngle = 0; 47 float sweepAngle = 270; 48 Rectangle2D.Float rect3= new Rectangle2D.Float(0, 110, 50, 50); 49 page.getCanvas().drawArc(pen, rect3, startAngle, sweepAngle); 50 51 //绘制扇形 52 Rectangle2D.Float rect4= new Rectangle2D.Float(70, 110, 50, 50); 53 page.getCanvas().drawPie(pen, rect4, startAngle, sweepAngle); 54 55 //绘制直线 56 Point pStart=new Point(205,110); 57 Point pEnd=new Point(205,160); 58 page.getCanvas().drawLine(pen, pStart, pEnd); 59 60 //绘制贝塞尔曲线 61 Point startPoint = new Point(290, 135); 62 Point firstControlPoint = new Point(330, 70); 63 Point secondControlPoint = new Point(330, 200); 64 Point endPoint = new Point(370, 135); 65 page.getCanvas().drawBezier(pen, startPoint, firstControlPoint, secondControlPoint, endPoint); 66 67 //保存文档 68 doc.saveToFile("DrawShapes.pdf",FileFormat.PDF); 69 } 70}

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

 

(本文完)

转载请注明出处!!

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

P2P技术揭秘.P2P网络技术原理与典型系统开发

Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E

Java 在PDF文档中绘制图形 - HelloWorld