PPT中支持插入多达9种不同类型的形状,每种类型下又包含数十种形状样式。针对如此多种类型的形状,为页面元素设计需要、方便形状操作管理的目的,可通过形状“组合”的方式来固定多个形状的位置、布局;对已有的组合形状,也可通过“取消组合”来重新定义形状组合样式,或者编辑已有的组合形状,可操作组合形状或者组合形状下的子形状,如设置形状名称、旋转、高、宽、对齐方式,同时,可设置形状排列方式(置于顶/底层、上/下移一层)等等。下面通过Java后端程序代码演示如何来实现以上操作,文章分3个示例demo来展示。

1. 程序所需API

可下载专门用于PowerPoint文档操作的API,Free Spire.Presentation for Java。获取Jar包后,将lib文件夹下的jar文件导入Java程序。(注:本文程序JDK版本为1.8.0)

2. Java代码

  2.1 组合形状

import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType; import java.awt.geom.Rectangle2D;
import java.util.ArrayList; public class GroupShapes {
public static void main(String[] args) throws Exception{
//创建PPT文档
Presentation ppt = new Presentation();
//获取第一张幻灯片
ISlide slide = ppt.getSlides().get(0); //添加一个缎带形状
IShape ribbon = slide.getShapes().appendShape(ShapeType.RIBBON, new Rectangle2D.Double(250,100,250,40));
ribbon.getFill().setFillType(FillFormatType.SOLID);
ribbon.getFill().getSolidColor().setKnownColor(KnownColors.GOLD);
ribbon.getLine().setWidth(0.1f); //添加一个心形
IShape heart = slide.getShapes().appendShape(ShapeType.HEART, new Rectangle2D.Double(335, 80, 80, 80));
heart.getFill().setFillType(FillFormatType.SOLID);
heart.getFill().getSolidColor().setKnownColor(KnownColors.RED);
heart.getLine().setWidth(0.1f); //将两个形状添加到ArrayList数组
ArrayList list = new ArrayList();
list.add(ribbon);
list.add(heart); //组合数组中的形状
ppt.getSlides().get(0).groupShapes(list); //保存文档
ppt.saveToFile("GroupShapes.pptx", FileFormat.PPTX_2013);
ppt.dispose();
}
}

  2.2 取消形状组合

import com.spire.presentation.*;

public class UngroupShape {
public static void main(String[] args) throws Exception{
//加载测试文档
Presentation ppt = new Presentation();
ppt.loadFromFile("GroupShapes.pptx"); //获取指定幻灯片中的形状
ISlide slide = ppt.getSlides().get(0);
IShape shape = slide.getShapes().get(0); //判断是否为组合形状
if(shape instanceof GroupShape)
{
//取消形状组合
slide.ungroup((GroupShape)shape);
} //保存文档
ppt.saveToFile("UngroupShape.pptx",FileFormat.PPTX_2013);
ppt.dispose();
}
}

2.3 编辑组合形状,并设置形状排列方式(置于顶/底层,上/下移一层)

以上文示例1中生成的组合形状为测试对象,重命名组合形状并设置形状排列方式为置于顶层。

import com.spire.presentation.*;

public class ModifyGroupShape {
public static void main(String[] args) throws Exception {
//加载测试文档
Presentation ppt = new Presentation();
ppt.loadFromFile("GroupShapes.pptx"); //获取指定幻灯片中的形状
ISlide slide = ppt.getSlides().get(0);
IShape shape = slide.getShapes().get(0); //判断是否为组合形状
if(shape instanceof GroupShape)
{
shape.setName("组合形状1");//命名组合形状
IShape objectshape1 = ((GroupShape) shape).getShapes().get(0);
objectshape1.setShapeArrange(ShapeAlignmentEnum.ShapeArrange.BringToFront);//设置子形状1置于顶层
IShape objectshape2 = ((GroupShape) shape).getShapes().get(1);
objectshape2.setName("绸带");//重命名移动后的子形状
} //保存文档
ppt.saveToFile("ModifyGroupShape.pptx",FileFormat.PPTX_2013);
ppt.dispose();
}
}

延伸阅读推荐:

(本文完)

Java 如何在PPT中设置形状组合、取消组合、编辑组合形状的更多相关文章

  1. 如何在 apache 中设置缓存有效时间

    今天学习了下如何在 apache 中设置缓存时间,记之以备忘. 在 http 报文头中,与缓存时间有关的两个字段是 Expires 以及 Cache-Control 中的 max-age,Expire ...

  2. 如何在Eclipse中设置默认的JSP文件头部编码

    如何在Eclipse中设置默认的JSP文件头部编码 一般,我们为了以后在导入和导出程序的时候(特别是项目较大,文件多)一般都默认文件编码格式为UTF-8 如果你通常都是通过Eclipse来编写程序,那 ...

  3. 如何在IIS中设置HTTPS服务

    文章:https://support.microsoft.com/en-us/help/324069/how-to-set-up-an-https-service-in-iis 在这个任务中 摘要 为 ...

  4. SPSS输出结果如何在word中设置小数点前面显示加0

    SPSS输出结果如何在word中设置小数点前面显示加0 在用统计分析软件做SPSS分析时,其输出的结果中,如果是小于1(绝对值)的数,那么会默认输出不带小数点的数值.例如0.362和 -0.141被显 ...

  5. 如何在XAMPP中设置多个网站

    xampp 是一个非常方便的本地 apache + php + mysql 的调试环境,在本地安装测试 WordPress 等各种博客.论坛程序非常方便.今天我们来给大家介绍一下,如何使用 XAMPP ...

  6. 【Java】在JTable中设置鼠标监听器,点击操作对应数据

    最终效果 鼠标点击JTable中任一数据,修改相应的信息. 确定点击的行和列 package com.dao; import java.awt.event.MouseAdapter; import j ...

  7. 如何在BIOS中设置RAID?

    随着价格的下降和相应主板的支持,目前SATA硬盘已经逐渐成为主流.但由于受芯片组和操作系统的影响,不少用户对SATA硬盘的使用及安装系统掌握不足,今天小编就给大家介绍一下SATA硬盘的日常应用技巧,希 ...

  8. 如何在SpriteBuilder中设置对象的通用属性

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteBuilder中可以为对象设置自定义类从 ...

  9. 如何在 Windows 中设置 /3GB 启动开关

    备注: 只有在下列操作系统中才支持 /3GB 开关: Windows 2000 Advanced Server Windows 2000 Datacenter Server Windows Serve ...

  10. 如何在IDM中设置代理服务器?

    很多时候,大家下载文件都是在国外的一些网站上进行下载,这样不可免会受到自身国内网络的限制,另一方面下载源为避免服务器带宽占用过多而限制下载速率,这就会导致文件下载极慢,甚至几KB每秒. 这种情况是不是 ...

随机推荐

  1. MySQL快速导入千万条数据(1)

    目录 一.命令行导入方式 二.LOAD DATA导入方式 对于传统的关系数据库如oracle,在大量数据导入方面的效率,我们一般有一个大概的认知,即1分钟以内可以导入千万条数据,而对于MySQL数据库 ...

  2. json数组格式问题

    ---恢复内容开始--- 使用jsonserver来模拟后台数据接口时犯了一个很低级的错误 找了很久没有发现有什么不对劲的地方,后来仔细发现原来是一个很细微的语法问题:}]  中间不能有逗号!! -- ...

  3. 9.26 多校联测 Day 5 总结

    虽然比赛还没打完,但是因为又罚坐了,提前把总结写出来吧() 看 T1,构造了一会发现大概就是把 b 序列放在 a 的最后面,前面位置填几个数. 先码了暴力,再码正解.但求出来的方案显然不是同一种/fn ...

  4. JavaScript:数据类型详解

    ECMAScript中数据类型目前有两种:基本数据类型和引用数据类型. 基本数据类型 基本数据类型也称作简单数据类型,为Undefined,Null,Boolean,Number,String,Sym ...

  5. 标子查询优化和改写SQL案例

    京华开发一哥们找我优化条报表SQL,反馈执行时间很慢需要 18s 才能出结果,安排. -- 原SQL SELECT 2 AS TYPE, to_char(a."create_time&quo ...

  6. Codeforces Round #702 (Div. 3) 题解

    写在前边 链接:Codeforces Round #702 (Div. 3) 比较简单,但是总是感觉脑子有点转不过弯来. A. Dense Array 链接:A题链接 题目大意: 在数组中插入若干个数 ...

  7. (Good topic)卡牌分组(3.27leetcode每日打卡)

    给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:  每组都有 X 张牌. 组内所有的牌上都写着相同的整数. 仅当你可选的 X &g ...

  8. Python读取Ansible playbooks返回信息

    一.背景及概要设计 当公司管理维护的服务器到达一定规模后,就必然借助远程自动化运维工具,而ansible是其中备选之一.Ansible基于Python开发,集合了众多运维工具(puppet.chef. ...

  9. 2023第十四届极客大挑战 — MISC WP

    Misc方向题解:来自本人 cheekin 请前往"三叶草小组Syclover"微信公众号输入flag获得flag 我的解答: 关注公众号回复就可以得到一张图片,图片隐写zsteg ...

  10. TPC-DS工具介绍及性能测试

    一. Hive-testbench工具介绍 TPC-DS:https://www.cnblogs.com/webDepOfQWS/p/10544528.html 由于原生态工具生产测试数据表存在bug ...