Java实现插入公式到PPT的示例代码
作者:E-iceblue 发布时间:2023-11-12 03:04:41
PowerPoint幻灯片中可插入公式,用于在幻灯片放映时演示相关内容的论证、推算的依据,能有效地为演讲者提供论述的数据支撑。通过后端程序代码,我们可借助特定的工具来实现在幻灯片中的插入公式,本文,将对此作详细介绍。
Jar包引入
通过 Maven仓库 下载导入,如下配置pom.xml:
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.presentation.jar </artifactId>
<version>7.6.3</version>
</dependency>
</dependencies>
如需手动导入,需要下载jar包到本地,然后解压,找到lib文件夹下的Spire.Presentation.jar文件。在IDEA中打开“Project Structure”界面,执行如图步骤将本地路径下的jar文件手动引入Java程序:
插入公式
下面是在PPT幻灯片中插入公式的主要方法和步骤:
创建Presentation类的对象,并通过Presentation.getSlides().get(int index)方法获取第一张幻灯片。
通过ISlide.getShapes().appendShape(ShapeType shapeType, Rectangle2D rectangle)方法添加形状到幻灯片。
通过IAutoShape.getTextFrame().getParagraphs().clear()方法删除形状中默认的段落后,通过IAutoShape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(String latexMathCode)方法添加公式到形状。LaTeX公式字符串可先行定义好,如本次代码示例。
最后,调用Presentation.saveToFile(String file, FileFormat fileFormat)方法保存文档到指定路径。
Java
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.geom.Rectangle2D;
public class AddFormula {
public static void main(String[] args) throws Exception{
//定义LaTeX公式代码
String latexCode1 = "x^{2} + \\sqrt{x^{2}+1}=2";
String latexCode2 = "F(x) &= \\int^a_b \frac{1}{3}x^3";
String latexCode3 = "\\alpha + \\beta \\geq \\gamma";
String latexCode4 = "\\overrightarrow{abc}";
String latexCode5 =" H_x=\\frac{1}{3}\\times{ \\left[ \\begin{array}{ccc}1 & 0 & -1\\\\1 & 0 & -1\\\\1 & 0 & -1\\end{array} \\right ]}";
String latexCode6 = "\\log_a{b}";
//创建Presentation类的实例
Presentation ppt = new Presentation();
//获取第一张幻灯片
ISlide slide = ppt.getSlides().get(0);
//添加形状到幻灯片
IAutoShape shape = slide.getShapes().appendShape(ShapeType.TRIANGLE, new Rectangle2D.Double(30, 100, 320, 50));
shape.getTextFrame().getParagraphs().clear();
//使用LaTeX代码添加数学公式到形状
shape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(latexCode1);
//重复以上操作,添加形状,并添加公式到形状
shape = slide.getShapes().appendShape(ShapeType.TRIANGLE, new Rectangle2D.Double(280, 80, 380, 70));
shape.getTextFrame().getParagraphs().clear();
shape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(latexCode2);
shape = slide.getShapes().appendShape(ShapeType.TRIANGLE, new Rectangle2D.Double(60, 190, 240, 40));
shape.getTextFrame().getParagraphs().clear();
shape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(latexCode3);
shape = slide.getShapes().appendShape(ShapeType.TRIANGLE, new Rectangle2D.Double(350, 190, 200, 40));
shape.getTextFrame().getParagraphs().clear();
shape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(latexCode4);
shape = slide.getShapes().appendShape(ShapeType.TRIANGLE, new Rectangle2D.Double(10, 240, 400, 100));
shape.getTextFrame().getParagraphs().clear();
shape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(latexCode5);
shape = slide.getShapes().appendShape(ShapeType.TRIANGLE, new Rectangle2D.Double(350, 280, 200, 40));
shape.getTextFrame().getParagraphs().clear();
shape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(latexCode6);
//设置形状边框和填充类型
for (int i = 0; i < slide.getShapes().getCount(); i++)
{
slide.getShapes().get(i).getFill().setFillType(FillFormatType.NONE);
slide.getShapes().get(i).getLine().setFillType(FillFormatType.NONE);
}
//保存文档
ppt.saveToFile("MathEquations.pptx", FileFormat.PPTX_2013);
ppt.dispose();
}
}
公式插入效果:
来源:https://www.cnblogs.com/Yesi/p/16469835.html


猜你喜欢
- 最近项目用到txt文件和xls文件的转换,这里记录一下具体的思路。下面利用java代码实现txt转xls,这里要使用到jxl.jar包,这个
- Java动态数组Arraylist存放自定义数据类型class Point{ int x; int y; public Point(int
- 嗯,就是BASE64,不用多想,本来计划是要跟上一篇字符串压缩一起写的,用来实现将一个文件可以用json或者text等方式进行接口之间的传输
- WinForm中的键盘按键有KeyDown,KeyPress和KeyUp事件。那么它们的顺序以及区别在哪里呢?本文就此作出如下分析:一、顺序
- 一、传入dll前,在C#中申请内存空间c#里面的指针即 IntPtr申请如下:IntPtr SrcImgData = Marshal.All
- 1、前言当提及如何终止一个线程时,部分读者通常立马想到的方法肯定是stop(),但是stop()方法并不被推荐使用(很多规范中是禁止使用的)
- Spring在Java EE开发中是实际意义上的标准,但我们在开发Spring的时候可能会遇到以下令人头疼的问题:(1)大量配置文件的定义;
- 最近开发遇到了个问题,app升级的时候,其他手机都能正常升级,下载完安装包,跳到安装页面进行新版本的安装。但却有用户反映,华为P10和华为M
- 在定义一个Rest接口时通常会利用GET、POST、PUT、DELETE来实现数据的增删改查;这几种方式有的需要传递参数,后台开发人员必须对
- Springboot 整合 RocketMQ 收发消息创建springboot项目pom.xml添加rocketmq-spring-boot
- 一、默认异常处理机制默认情况下,SpringBoot 提供 /error 请求,来处理所有异常的。1.浏览器客户端,请求头里的属性是Acce
- 序言:此前,我们主要通过XML来书写SQL和填补对象映射关系。在SpringBoot中我们可以通过注解来快速编写SQL并实现数据访问。(仅需
- 前言 CompoundButton在XML文件中主要使用下面两个属性。checked:指定按钮的勾选状态,true表示勾选,fal
- XY个人记SparkSQL是spark的一个模块,主入口是SparkSession,将SQL查询与Spark程序无缝混合。DataFrame
- 需求:校验收货地址是否超出配送范围重要:做该需求的思路就是通过卖家和卖家具体的地址信息,来获取到二者的经纬度, 此时可以使用百度的 &quo
- 01-前言:什么是循环依赖?首先,我们先明确下依赖的定义。 如果一个 Bean bar 的属性,引用了容器中的另外一个 Bean foo,那
- 一、先看下项目结构CodeGenerator:生成器主类resources下的mapper.java.vm:一个模板类,用以在生成dao层时
- 在android 中可以广泛看到的template<typename T> class Sp 句柄类实际上是android 为实
- 查询文档 & 基本操作为了方便学习, 本节中所有示例沿用上节的索引按照ID单个GET class_1/_doc/1查询结果:{ &n
- 在Spring Boot Actuator中提供很多像health、metrics等实时监控接口,可以方便我们随时跟踪服务的性能指标。Spr