欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 在PDF中繪制形狀的兩種方法

 更新時間:2020年07月10日 16:33:10   作者:Jazzz  
這篇文章主要介紹了Java 在 PDF 中繪制形狀的兩種實(shí)現(xiàn)方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

在我們編輯PDF文檔的過程中,有時候需要在文檔中添加一些如多邊形、矩形、橢圓形之類的圖形,而Free Spire PDF for Java 則正好可以幫助我們在Java程序中通過代碼在PDF文檔中繪制形狀,以及設(shè)置形狀邊線顏色和填充色。

Jar包導(dǎo)入

方法一:下載Free Spire.PDF for Java包并解壓縮,然后將lib文件夾下的Spire.Pdf.jar包作為依賴項(xiàng)導(dǎo)入到Java應(yīng)用程序中

方法二:直接通過Maven倉庫安裝JAR包,配置pom.xml文件的代碼如下:

<repositories>
  <repository>
    <id>com.e-iceblue</id>
    <url>http://repo.e-iceblue.cn/repository/maven-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){
    //創(chuàng)建PDF文檔,并添加一頁
    PdfDocument pdf = new PdfDocument();
    PdfPageBase page = pdf.appendPage();

    //創(chuàng)建畫筆、畫刷
    PdfPen pen =new PdfPen(new PdfRGBColor(Color.black),0.3);
    PdfBrush brush= PdfBrushes.getGreenYellow();

    //繪制矩形
    Rectangle2D.Float rect1 = new Rectangle2D.Float(0, 20, 120, 50);//創(chuàng)建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);
  }
}

效果圖

以上就是Java 在PDF中繪制形狀的兩種方法的詳細(xì)內(nèi)容,更多關(guān)于Java 在PDF中繪制形狀的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Springboot中整合knife4j接口文檔的過程詳解

    Springboot中整合knife4j接口文檔的過程詳解

    knife4j就swagger的升級版API文檔的一個框架,但是用起來比swagger方便多了,UI更加豐富,這篇文章主要介紹了Springboot中整合knife4j接口文檔,需要的朋友可以參考下
    2022-04-04
  • Java利用DelayQueue實(shí)現(xiàn)延遲任務(wù)代碼實(shí)例

    Java利用DelayQueue實(shí)現(xiàn)延遲任務(wù)代碼實(shí)例

    這篇文章主要介紹了Java利用DelayQueue實(shí)現(xiàn)延遲任務(wù)代碼實(shí)例,DelayQueue?是一個支持延時獲取元素的阻塞隊(duì)列,?內(nèi)部采用優(yōu)先隊(duì)列?PriorityQueue?存儲元素,同時元素必須實(shí)現(xiàn)?Delayed?接口,需要的朋友可以參考下
    2023-12-12
  • 使用Java8實(shí)現(xiàn)觀察者模式的方法(上)

    使用Java8實(shí)現(xiàn)觀察者模式的方法(上)

    本文給大家介紹使用java8實(shí)現(xiàn)觀察者模式的方法,涉及到j(luò)ava8觀察者模式相關(guān)知識,對此感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • Java超詳細(xì)講解ArrayList與順序表的用法

    Java超詳細(xì)講解ArrayList與順序表的用法

    ArrayList 類是一個可以動態(tài)修改的數(shù)組,與普通數(shù)組的區(qū)別就是它是沒有固定大小的限制,我們可以添加或刪除元素。ArrayList 繼承了 AbstractList ,并實(shí)現(xiàn)了 List 接口,順序表是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示
    2022-06-06
  • Java 使用json-lib處理JSON詳解及實(shí)例代碼

    Java 使用json-lib處理JSON詳解及實(shí)例代碼

    這篇文章主要介紹了Java 使用json-lib處理JSON詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java實(shí)現(xiàn)網(wǎng)頁解析示例

    java實(shí)現(xiàn)網(wǎng)頁解析示例

    這篇文章主要介紹了java實(shí)現(xiàn)網(wǎng)頁解析示例,需要的朋友可以參考下
    2014-04-04
  • MyBatis找不到mapper文件的實(shí)現(xiàn)

    MyBatis找不到mapper文件的實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis找不到mapper文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java中數(shù)組的定義和使用教程(二)

    Java中數(shù)組的定義和使用教程(二)

    這篇文章主要給大家介紹了關(guān)于Java中數(shù)組的定義和使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺談Java double 相乘的結(jié)果偏差小問題

    淺談Java double 相乘的結(jié)果偏差小問題

    下面小編就為大家?guī)硪黄獪\談Java double 相乘的結(jié)果偏差小問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • mybatis-plus的批量新增/批量更新以及問題

    mybatis-plus的批量新增/批量更新以及問題

    這篇文章主要介紹了Mybatis-Plus實(shí)現(xiàn)批量新增與批量更新以及出現(xiàn)的問題,文章中有詳細(xì)的代碼示例,感興趣的同學(xué)可以參考一下
    2023-04-04

最新評論