首页 > 编程语言 >如何通过Java代码在PowerPoint 幻灯片中插入公式

如何通过Java代码在PowerPoint 幻灯片中插入公式

时间:2023-03-29 15:32:51浏览次数:53  
标签:Java Presentation getShapes slide shape getParagraphs getTextFrame PowerPoint 幻灯

不论你是学生、老师还是职场工作者,在制作PowerPoint 文档的时候,很可能需要插入一些公式。插入的公式能够有效地为幻灯片内容提供论点的论证、推算的理论支撑。本文将为您介绍如何通过Java代码,以编程的方式在PowerPoint 幻灯片中插入公式。下面是我整理的插入公式的方法及具体步骤,并附上Java代码供大家参考。

代码编译环境:

IntelliJ IDEA 2019(jdk 1.8.0)

Presentation Jar包:Free Spire.Presentation for Java 5.1.0

引入jar包

导入方法1:

手动引入。将Free Spire. Presentation for Java下载到本地,解压,找到lib文件夹下的Spire. Presentation.jar文件。在IDEA中打开如下界面,将本地路径中的jar文件引入Java程序:

如何通过Java代码在PowerPoint 幻灯片中插入公式_插入公式

导入方法2:如果您想通过 Maven安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.presentation.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>

在PowerPoint 幻灯片中插入公式

  • 创建 Presentation 类的对象,并通过 Presentation.getSlides().get(int index) 方法获取指定幻灯片。
  • 调用 ISlide.getShapes().appendShape(ShapeType shapeType, Rectangle2D rectangle) 方法添加形状到幻灯片。
  • 通过 IAutoShape.getTextFrame().getParagraphs().clear() 方法删除形状中默认的段落后,通过 IAutoShape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(String latexMathCode) 方法添加公式到形状。
  • 最后,调用 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("插入公式.pptx", FileFormat.PPTX_2013);
        ppt.dispose();
    }
}

效果图

如何通过Java代码在PowerPoint 幻灯片中插入公式_插入公式_02

—本文完—


标签:Java,Presentation,getShapes,slide,shape,getParagraphs,getTextFrame,PowerPoint,幻灯
From: https://blog.51cto.com/u_15656056/6157119

相关文章

  • Java的基础语法
    Java的基础语法1.注释、标识符、关键字**书写注释是一个非常好的习惯**1.单行注释2.多行注释3.文件注释**Java所有组成......
  • Java的了解以及Idea下载
    Java三大版本javase标准版(桌面程序,控制台开发)javaME:嵌入式开发(手机,小家电)JavaEE:E企业级开发(web端。服务端)JDK,JRE,JVMJVM:java虚拟机,是java可以在任何电脑上运行的前......
  • 包机制,JavaDoc
    包机制包机制语法格式为:packagepkg1[.pak2[.pak3...]]一般利用公司域名倒置作为包名;为了能够使用某个包的成员,我们需要再java程序中明确导入该包,使用“import......
  • 【Java8新特性】带你完全理解JDK8新特性不是问题
    一、Java8概述Java8(又称JKD1.8)是Java语言开发的一个主要版本。Oracle公司于2014年3月18日发布Java8。支持Lambda表达式函数式接口新的StreamAPI新的日期API其......
  • 闭关Java第六天JavaSE完结
    父类引用指向子类对象把子类转换成父类,向上转型把父类转换成子类,向下转型,需要强转强制转换会丢失精度(子类转为父类可能会丢失方法)方便方法的调用,减少重复的代码!简洁......
  • java线程池详解
    为什么要使用线程池ExecutorService利用池化线程执行任务,Executors的工厂方法可以创建线程池线程池解决了两个问题:减少每个线程创建消耗的时间,复用线程提供管理线程,资......
  • 初识java
    目录JavaSE认识JavaJava特性Java核心机制垃圾回收机制跨平台原理常用DOS命令注释JavaSE认识JavaJava特性跨平台/可移植性(一次编译到处运行)、安全性、面向对象、简单性......
  • 存储动态列的结果集(行列互转)--java、mybatis、orcale
    业务上需要存储动态列的数据通过行列互转的方式实现数据库中动态列的几种设计思路使用数据库DDL进行动态创建使用数据库预留字段(宽表)使用数据库中的json数据......
  • Exception in thread "main" javax.mail.MessagingException: Could not connect to S
    写一个QQ邮件发送,运行时报下面的错误。  百度翻译是:线程“main”javax.mail.MessagingException异常:无法连接到SMTP主机:SMTP.qq.com,端口:465;嵌套异常为:javax.net.ssl.s......
  • 每日总结-23.3.29-利于云服务器和javaweb简单实现一个网站
    3月29日总结今日使用云服务器和tomcat实现了简单网站的搭建。使用工具(个人体验,仅作参考,使用其他版本或工具应该也行):1.移动云新人体验免费云服务器一台。(个人专享:通......