一、概述及环境准备

SmartArt 图形通过将文字、图形从多种不同布局、组合来表现内容和观点的逻辑关系,能够快速、有效地传达设计者的意图和信息。这种图文表达的视觉表示形式常用于PPT,Word,Excel等办公文档中。本文将以在PPT中创建SmartArt图形为例来介绍通过Java程序来添加SmartArt图形到PPT的方法,以及如何读取SmartArt图形中的文本内容。

工具:Free Spire.Presentation for Java(免费版)

Jar获取及导入:官网下载jar包,并解压将lib文件夹下的jar文件导入Java程序,或者通过maven仓库下载导入

二、代码示例

1. Java在PPT中创建SmartArt图形

这里创建SmartArt形状时,可在默认创建的形状中添加内容,也可以自定义图形节点来添加内容。

import com.spire.presentation.*;
import com.spire.presentation.diagrams.*;public class SmartArt {public static void main(String[] args) throws Exception{//创建PPT文档,获取一张幻灯片(创建的空白PPT文档,默认包含一张幻灯片)Presentation ppt = new Presentation();ISlide slide = ppt.getSlides().get(0);//创建SmartArt图形1ISmartArt smartArt1 = slide.getShapes().appendSmartArt(50,50,200,200, SmartArtLayoutType.BASIC_CYCLE);//在幻灯片指定位置添加指定大小和布局类型的SmartArt图形smartArt1.setColorStyle(SmartArtColorType.COLORFUL_ACCENT_COLORS_4_TO_5);//设置SmartArt图形颜色类型smartArt1.setStyle(SmartArtStyleType.INTENCE_EFFECT);//设置SmartArt图形样式ISmartArtNode smartArtNode1 = smartArt1.getNodes().get(0);smartArtNode1.getTextFrame().setText("设计");//获取默认节点,添加内容smartArt1.getNodes().get(1).getTextFrame().setText("模仿");smartArt1.getNodes().get(2).getTextFrame().setText("学习");smartArt1.getNodes().get(3).getTextFrame().setText("实践");smartArt1.getNodes().get(4).getTextFrame().setText("创新");//创建SmartArt图形2,自定义节点内容ISmartArt smartArt2 = slide.getShapes().appendSmartArt(400,200,200,200,SmartArtLayoutType.BASIC_RADIAL);smartArt2.setColorStyle(SmartArtColorType.DARK_2_OUTLINE);smartArt2.setStyle(SmartArtStyleType.MODERATE_EFFECT);//删除默认的节点(SmartArt中的图形)for (Object a : smartArt2.getNodes()) {smartArt2.getNodes().removeNode((ISmartArtNode) a);}//添加一个母节点ISmartArtNode node2 = smartArt2.getNodes().addNode();//在母节点下添加三个子节点ISmartArtNode node2_1 = node2.getChildNodes().addNode();ISmartArtNode node2_2 = node2.getChildNodes().addNode();ISmartArtNode node2_3 = node2.getChildNodes().addNode();//在节点上设置文字及文字大小node2.getTextFrame().setText("设备");node2.getTextFrame().getTextRange().setFontHeight(14f);node2_1.getTextFrame().setText("机械");node2_1.getTextFrame().getTextRange().setFontHeight(12f);node2_2.getTextFrame().setText("电气");node2_2.getTextFrame().getTextRange().setFontHeight(12f);node2_3.getTextFrame().setText("自动化");node2_3.getTextFrame().getTextRange().setFontHeight(12f);// 保存文档ppt.saveToFile("AddSmartArt.pptx",FileFormat.PPTX_2013);ppt.dispose();}
}

创建结果:

2. 读取SmartArt中的文本

import com.spire.presentation.*;
import com.spire.presentation.diagrams.ISmartArt;import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;public class GetTextOfSmartArt {public static void main(String[] args) throws Exception{//创建实例,加载测试文档Presentation presentation = new Presentation();presentation.loadFromFile("AddSmartArt.pptx");//新建txt文档,用于写入提取出来的文本String result = "extractTextOfSmartArt.txt";File file=new File(result);if(file.exists()){file.delete();}file.createNewFile();FileWriter fw =new FileWriter(file,true);BufferedWriter bw =new BufferedWriter(fw);//遍历所有幻灯片并获取SmartArt图形.for (int i = 0; i < presentation.getSlides().getCount(); i++){for (int j = 0; j < presentation.getSlides().get(i).getShapes().getCount(); j++){if (presentation.getSlides().get(i).getShapes().get(j) instanceof ISmartArt){ISmartArt smartArt = (ISmartArt)presentation.getSlides().get(i).getShapes().get(j);//提取SmartArt中的文本,写入txtfor (int k = 0; k < smartArt.getNodes().getCount(); k++){bw.write(smartArt.getNodes().get(k).getTextFrame().getText() + "\r\n");}}}}bw.flush();bw.close();fw.close();}
}

文本提取结果:

相关文章推荐:

  • Java 编辑PPT中的SmartArt图形

(本文完)

Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本相关推荐

  1. 计算机图表应用样式,将在 Microsoft Office 早期版本中创建的图表转换为 SmartArt 图形或形状...

    本文详细介绍将在 Microsoft Office 早期版本中创建的图表转换为 SmartArt 图形或形状 通过使用 Microsoft Office Excel 2007 或 Microsoft ...

  2. 编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款

    查看本章节 查看作业目录 需求说明: 某用户共有两张银行卡,账户名称相同,但卡号和余额不同.模拟用户使用这两张银行卡进行消费的过程,并打印出消费明细 实现思路: 项目中创建账户类 Account,类中 ...

  3. 声明银行账户类 java_编写Java程序,使用ThreadLocal类,项目中创建账户类 Account,类中包括账户名称name、 ThreadLocal 类的引用变量amount,表示存款...

    查看本章节 查看作业目录 需求说明: 某用户共有两张银行卡,账户名称相同,但卡号和余额不同.模拟用户使用这两张银行卡进行消费的过程,并打印出消费明细 实现思路: 项目中创建账户类 Account,类中 ...

  4. python怎么打开h5文件_python中利用h5py模块读取h5文件中的主键方法

    如下所示: import h5py import numpy as np #HDF5的写入: imgData = np.zeros((2,4)) f = h5py.File('HDF5_FILE.h5 ...

  5. 在asp.net中如何用javascript读取本地Xml中的数据到网页中的文本框?

    在asp.net中如何用javascript读取本地Xml中的数据到网页中的文本框? 转载于:https://www.cnblogs.com/dynasty/archive/2005/08/18/21 ...

  6. aix oracle 裸盘,AIX中创建的裸设备即AIX中的逻辑卷 for Oracle

    AIX中创建的裸设备即AIX中的逻辑卷 创建方法如下: 语法:mklv -t raw -y [lvname] [vgname] [LPs] 例如在创建Oracle所需的裸设备: mklv -t raw ...

  7. mysql中创建唯一索引的关键字_MySQL中创建唯一索引的关键字是_______ 。

    [判断题]判断零件键槽的尺寸标注是否正确.[图片] [单选题][图片] [单选题]读零件图,回答问题:1. C3表示倒角为( )度?2. C2表示倒角锥台高度为( )?[图片] [单选题]如图为套筒零 ...

  8. 如何在geth中创建genesis.json_如何在Photoshop中应用“通道混合器”创建一个复古韵味色调...

    现在从Photoshop屏幕右侧的"调整"面板中选择"通道混合器" 在设置中,您应从"输出通道"下拉列表中选择"红色", ...

  9. unity中创建游戏场景_在Unity中创建Beat Em Up游戏

    unity中创建游戏场景 Learn how to use Unity to create a 3D Beat Em Up game in this full tutorial from Awesom ...

  10. scala中创建时间序列_如何从Scala中的序列中提取唯一元素?

    scala中创建时间序列 While storing data elements to a data structure or extracting raw data duplicate data m ...

最新文章

  1. 江苏省三级偏软考试大纲
  2. c# out ref
  3. 【Java报错】MultipartFile 类型文件上传 Current request is not a multipart request 问题处理(postman添加MultipartFile)
  4. java 自定义注解以及获得注解的值
  5. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(2)(第四章:变量、作用域与内存)
  6. Exchange 2013 SP1部署系列7:发送连接器的配置
  7. 交接文档怎么写_如何最快速的交接工作
  8. Java中String的next()和nextLine()方法
  9. Google大牛涉嫌性骚扰被停职,NIPS官方致歉,传闻多时的AI圈黑幕终于被撕开
  10. python格式化输出类型_在python中自己写的数据类型使用print无法输出每个元素
  11. 买房子需要注意什么?最佳答案
  12. 09-1.部署 coredns 插件
  13. java 过滤器 中文_javaweb — 过滤器(附实现中文乱码问题)
  14. 有关Intel主板驱动静默安装的一个坑
  15. 刻录linux-iso至u盘工具,ISO USB刻录工具ISO to USB burning tool V1.5 完美版
  16. 中国神话--学术性研究
  17. ubuntu 安装咖啡壶-chemex命令详解
  18. 跳石头 解题报告【二分答案】
  19. 剖析拒绝服务攻击-SYN拒绝服务(转)
  20. 【网易笔试】小易最近在数学课上学习到了集合的概念

热门文章

  1. 黑客爱用的 HOOK 技术大揭秘!
  2. 编译原理的FIRST、FOLLOW、FIRSTVT、LASTVT的求法总结
  3. 冯诺依曼计算机格言,约翰.冯.诺依曼名言
  4. Nx 介绍: 基于插件的单一代码库(Monorepo)构建系统
  5. DOS下的虚拟光驱:ISOEMU 1.05 中文版
  6. 事和书的感悟_李孟_新浪博客
  7. 【郝斌老师数据结构学习笔记 day 3】
  8. 计算机玩游戏不能全屏,为什么win7玩游戏不能全屏_win7电脑不能全屏玩游戏怎么设置-win7之家...
  9. 博士申请 | 美国圣路易斯华盛顿大学王晨光老师招收NLP方向全奖博士/博后/硕士...
  10. 不动点迭代法和牛顿迭代法