Java 在PPT中添加哗伯、提取SmartArt圖形

一、前言及環(huán)境構建

SmartArt圖形常用于將文字量少篷角、層次較明顯的文本轉換為具有各種附屬關系焊刹、并列關系等關系結構的文檔插圖,以此來快速恳蹲、輕松虐块、有效地傳達信息。本文將通過Java程序來介紹為PPT文檔添加SmartArt圖形的方法嘉蕾,并演示如何提取文檔中SmartArt圖形的文本信息贺奠。

此次教程所用工具為Free Spire.Presentation for Java(免費版),可通過官網(wǎng)下載獲取错忱。工具下載后進行解壓儡率,然后將lib文件夾下的Spire.Presentation.jar 文件導入Java程序∫郧澹或者也可直接通過maven倉庫進行工具的下載導入儿普。

二、代碼演示

示例1 添加SmartArt圖形到PPT

以下代碼里包含了添加默認SmartArt圖形及創(chuàng)建自定義圖形節(jié)點兩種方式掷倔。

import com.spire.presentation.*;

import com.spire.presentation.diagrams.*;

public class AddSmartArt {

public static void main(String[] args) throws Exception {

//創(chuàng)建PPT文檔眉孩,獲取默認生成的第一張幻燈片

Presentation ppt = new Presentation();

ISlide slide =ppt.getSlides().get(0);

//創(chuàng)建SmartArt圖形1

ISmartArt 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);//獲取默認節(jié)點,添加內容

smartArtNode1.getTextFrame().setText("信息");

smartArt1.getNodes().get(1).getTextFrame().setText("溝通");

smartArt1.getNodes().get(2).getTextFrame().setText("分析");

smartArt1.getNodes().get(3).getTextFrame().setText("優(yōu)化");

smartArt1.getNodes().get(4).getTextFrame().setText("執(zhí)行");

//創(chuàng)建SmartArt圖形2今魔,自定義節(jié)點內容

ISmartArt smartArt2 =

slide.getShapes().appendSmartArt(400,200,200,200,SmartArtLayoutType.BASIC_RADIAL);

smartArt2.setColorStyle(SmartArtColorType.?DARK_2_OUTLINE);

smartArt2.setStyle(SmartArtStyleType.?MODERATE_EFFECT);

//刪除默認的節(jié)點(SmartArt中的圖形)

for (Objecta : smartArt2.getNodes()) {

smartArt2.getNodes().removeNode((ISmartArtNode)a);

??????????????? }

//添加一個母節(jié)點

ISmartArtNode node2 =smartArt2.getNodes().addNode();

//在母節(jié)點下添加三個子節(jié)點

ISmartArtNode node2_1 =node2.getChildNodes().addNode();

ISmartArtNode node2_2 =node2.getChildNodes().addNode();

ISmartArtNode node2_3 =node2.getChildNodes().addNode();

//在節(jié)點上設置文字及文字大小

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("output/AddSmartArt.pptx",FileFormat.PPTX_2013);

ppt.dispose();

??????????? }

?????? }

添加效果:

示例2? 從PPT中提取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 ExtractTextFromSmartart {

public static void main(String[] args) throws Exception{

//創(chuàng)建實例勺像,加載測試文檔

Presentation presentation = new Presentation();

presentation.loadFromFile("C:\\Users\\Test1\\Desktop\\AddSmartArt.pptx");

//新建txt文檔,用于寫入提取出來的文本

String result = "output/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);

bw.write("以下是從SmarArt圖形中提取出的文本信息:"+"\r\n");

//遍歷所有幻燈片并獲取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中的文本错森,并寫入txt

for (int k = 0; k < smartArt.getNodes().getCount(); k++)

?????????????????????? {

bw.write(smartArt.getNodes().get(k).getTextFrame().getText()+?"\r\n");

??????????????????????????? }

??????????????????????? }

??????????????????? }

? ??????????????}

?bw.flush();

?bw.close();

?fw.close();

??????????? }

??????? }

提取效果:

(本文完)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市篮洁,隨后出現(xiàn)的幾起案子涩维,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓦阐,死亡現(xiàn)場離奇詭異蜗侈,居然都是意外死亡,警方通過查閱死者的電腦和手機睡蟋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門踏幻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人戳杀,你說我怎么就攤上這事该面。” “怎么了信卡?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵隔缀,是天一觀的道長。 經常有香客問我傍菇,道長猾瘸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任丢习,我火速辦了婚禮牵触,結果婚禮上,老公的妹妹穿的比我還像新娘咐低。我一直安慰自己荒吏,他們只是感情好,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布渊鞋。 她就那樣靜靜地躺著绰更,像睡著了一般。 火紅的嫁衣襯著肌膚如雪锡宋。 梳的紋絲不亂的頭發(fā)上儡湾,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音执俩,去河邊找鬼徐钠。 笑死,一個胖子當著我的面吹牛役首,可吹牛的內容都是我干的尝丐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼衡奥,長吁一口氣:“原來是場噩夢啊……” “哼爹袁!你這毒婦竟也來了?” 一聲冷哼從身側響起矮固,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤失息,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盹兢,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡邻梆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绎秒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浦妄。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖见芹,靈堂內的尸體忽然破棺而出剂娄,到底是詐尸還是另有隱情,我是刑警寧澤辆童,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布宜咒,位于F島的核電站,受9級特大地震影響把鉴,放射性物質發(fā)生泄漏故黑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一庭砍、第九天 我趴在偏房一處隱蔽的房頂上張望场晶。 院中可真熱鬧,春花似錦怠缸、人聲如沸诗轻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扳炬。三九已至,卻和暖如春搔体,著一層夾襖步出監(jiān)牢的瞬間恨樟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工疚俱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留劝术,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓呆奕,卻偏偏與公主長得像养晋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子梁钾,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350