Java 插入公式到PPT幻灯片

PowerPoint幻灯片中可插入公式,用于在幻灯片放映时演示相关内容的论证、推算的依据,能有效地为演讲者提供论述的数据支撑。通过后端程序代码,我们可借助特定的工具来实现在幻灯片中的插入公式,本文,将对此作详细介绍。

Jar包引入

通过 Maven仓库 下载导入,如下配置pom.xml:

<repositories>
    <repository>
        <id>com.e-iceblueid>
        <url>https://repo.e-iceblue.cn/repository/maven-public/url>
    repository>
repositories>
<dependencies>
    <dependency>
        <groupId>e-icebluegroupId>
        <artifactId>spire.presentation.jar artifactId>
        <version>7.6.3version>
    dependency>
dependencies>

如需手动导入,需要下载jar包到本地,然后解压,找到lib文件夹下的Spire.Presentation.jar文件。在IDEA中打开”Project Structure”界面,执行如图步骤将本地路径下的jar文件手动引入Java程序:

Java 插入公式到PPT幻灯片

插入公式

下面是在PPT幻灯片中插入公式的主要方法和步骤:

  1. 创建 Presentation类的对象,并通过 Presentation.getSlides().get(int index)方法获取第一张幻灯片。
  2. 通过 ISlide.getShapes().appendShape(ShapeType shapeType, Rectangle2D rectangle)方法添加形状到幻灯片。
  3. 通过 IAutoShape.getTextFrame().getParagraphs().clear()方法删除形状中默认的段落后,通过 IAutoShape.getTextFrame().getParagraphs().addParagraphFromLatexMathCode(String latexMathCode)方法添加公式到形状。LaTeX公式字符串可先行定义好,如本次代码示例。
  4. 最后,调用 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();
    }
}

公式插入效果:

Java 插入公式到PPT幻灯片

—END—

Original: https://www.cnblogs.com/Yesi/p/16469835.html
Author: E-iceblue
Title: Java 插入公式到PPT幻灯片

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537443/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringCloud学习笔记-Eureka基础

    Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的微服…

    Java 2023年5月30日
    079
  • Spring Cloud Hystrix 熔断器(五)

    序言 感觉hystrix很精彩,文档讲的也很好,这篇总结到哪里是哪里吧 写Hystrix之前,我们先简单的说说熔断器,和限流,这样你看完之后,就可以很容易理解Hystrix 熔断器…

    Java 2023年5月30日
    074
  • MyBatis关联查询和懒加载错误

    今天在写项目时遇到了个BUG。先说一下背景,前端请求更新生产订单状态,后端从前端接收到生产订单ID进行查询,然后就有问题了。 先看控制台报错: org.apache.ibatis….

    Java 2023年6月8日
    061
  • 也许互联网大厂BAT更看重你的计算机基础知识(2022必看的操作系统,计算机网络的学习方式

    校招面试求职,大厂学导航认准「 小龙coding」,致力于打造全网最佳大厂进阶台~ 大家好,我是小龙。 我们都知道无论是在工作还是学*中,对于每个程序员,计算机基础一定是特别重要的…

    Java 2023年6月5日
    064
  • MYSQL8-快速生成表结构(用于生成文档)

    各种工具都有,没有特别趁手的。不如自己用sql处理。 SELECT column_name AS CODE, CASE WHEN column_comment IS NULL OR…

    Java 2023年6月9日
    061
  • spring boot学习

    每一次的加载都会去扫描spring.factories文件里面的类并且放入ioc中 注解 @Async,@EnableAsync 前者告诉spring这是一个异步任务,后者在启动类…

    Java 2023年6月9日
    060
  • springrain 1.1 发布,spring 的极简封装

    经过2个月的测试修改,springrain1.1已经稳定,今日发布. 主要改动如下: 1.添加批量更新和保存的方法 2.添加maven分支 3.添加博客管理的demo 4.增加re…

    Java 2023年5月30日
    065
  • 【二】pig4cloud项目一键build — 编写发布脚本

    在开发测试阶段,代码从仓储发布到测试服务器总是少不了的过程,在这个过程中我喜欢把一些繁琐的步骤全部全部聚合到一个脚本里面,只需要执行一个脚本或者把脚本配置到jenkins上通过按钮…

    Java 2023年6月8日
    081
  • java多线程

    多线程: 多线程是指程序中包含多个执行流,即在-个程序中可以同时运行多个不同的线程来执行不同的任务。 多线程的好处: 可以提高 CPU 的利用率。在多线程程序中,一个线程必须等待的…

    Java 2023年6月13日
    065
  • Java连载153-可变参数、多线程状态图

    一、可变参数 可变参数顾名思义就是,编写一个函数的时候,可以传入一个或者多个参数 实际原理:根据传入的参数类型以及个数,创建一个数组,用于存储这些数据,在函数中调用的时候,也可以使…

    Java 2023年6月13日
    086
  • Spring系列25:Spring AOP 切点详解

    @Poincut 的使用格式如下: @Poincut("PCD") // &#x5207;&#x70B9;&#x8868;&#x…

    Java 2023年6月5日
    092
  • 浅析Java双亲委派机制及其作用

    双亲委派机制:当某个类加载器准备加载一个.class字节码文件时,它首先将这个加载任务委派给上一级类加载器,上一级加载器再委派到更上一级类加载器,递归这个操作直到最顶级的类加载器。…

    Java 2023年6月8日
    069
  • 替代 Hystrix,Spring Cloud Alibaba Sentinel 快速入门

    提起 Spring Cloud 的限流降级组件,一般首先想到的是 Netflix 的 Hystrix。 不过就在2018年底,Netflix 宣布不再积极开发 Hystrix,该项…

    Java 2023年5月30日
    089
  • 世纪互联运营的Microsoft Azure正式支持FreeBSD虚拟机镜像

    自2012 年开始,微软云计算与企业事业部和Citrix 思杰,NetApp 达成合作,共同开发出第一版针对Hyper-V 虚拟设备驱动以及相关的用户态程序,并将此称之为集成服务(…

    Java 2023年5月30日
    078
  • Jni 线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)

    此文章是关于NDK线程的第二篇理论知识笔记。主要有两个点,如下: 1.pthread_create(Too many arguements, expected 1) ?2.线程中如…

    Java 2023年5月29日
    072
  • 初始Activiti

    工作流,简单的理解就是工作流程,工作流在我们日常生活中无处不在,例如说:员工请假,首先需要提交请假申请,然后提交的申请转到上级领导手里,领导检查过后并同意,最后通知员工领导同意该请…

    Java 2023年6月16日
    073
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球