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)

大家都在看

  • 类型擦除真的能完全擦除一切信息吗?java 泛型揭秘

    背景 我们都知道泛型本质上是提供类型的”类型参数”,它们也被称为参数化类型(parameterized type)或参量多态(parametric poly…

    Java 2023年5月29日
    072
  • python模块–zipfile文件压缩

    zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求 ,本文主要谈谈zipfile几个常用的用法。 首先我在Windows操作系统中创…

    Java 2023年6月14日
    074
  • Smartbi绘制表格

    Smartbi操作—绘制报表 实现需求 在需要向数据库中查询一些字段并绘制成一个Excel表格时,可以不需要经过后台写代码,直接通过在Smartbi中写SQL语句查询数…

    Java 2023年6月16日
    090
  • 给ShardingSphere提了个PR

    说来惭愧,干了 10 来年程序员,还没有给开源做过任何贡献,以前只知道嘎嘎写,出了问题嘎嘎改,从来没想过提个 PR 去修复他,最近碰到个问题,发现挺简单的,就随手提了个 PR 过去…

    Java 2023年6月13日
    075
  • Mybatis系列全解(三):Mybatis简单CRUD使用介绍

    封面:洛小汐 作者:潘潘 在理解中执行,在执行中理解,学习技术也循此道。 ; 前言 上一篇文章 《Mybatis系列全解(二):Mybatis简介与环境搭建》 ,我们对 Mybat…

    Java 2023年6月13日
    089
  • 力扣|Q1834单线程CPU-SingleThreadedCPU

    Q1834SingleThreadedCPU 简介 给你一个二维数组 tasks,用于表示 n​​​​​​ 项从 0 到 n – 1 编号的任务。其中 tasks[i]…

    Java 2023年6月8日
    069
  • Linux下mysql的彻底卸载

    1、查看mysql的安装情况 rpm -qa | grep -i mysql 2、删除上图安装的软件 rpm -ev mysql-community-libs-5.7.27-1.e…

    Java 2023年6月7日
    080
  • Java基础常识

    1.eclipse Run as application 快捷键 2.关于半角和全角 1.eclipse Run as application 快捷键 记得刚学时两个手并用按住了A…

    Java 2023年5月29日
    080
  • .net 自动分类算法【原创】

    目前自动分类算法是参考网上的思路和想法个人自主研发的。 当然互联网上有很多人采用不同的方式去解决自动分类问题,也有不同的算法和论文支持去做,但纵观自动分类这块工作是属于机器学习这块…

    Java 2023年6月8日
    077
  • 一个 Java 正则表达式例子

    今天在项目里看到用 Python 正则表达式的时候,用到 group,没有仔细看。正好学习 Java 正则表达式,对 group 多留意了一下。 上代码: 打印: 这里有两个 gr…

    Java 2023年5月29日
    079
  • Java微服务分布式架构

    摘自《Java微服务分布式架构企业实战》 1.传统单体应用架构存在的问题一个完整的单体应用程序通常主要由三部分组成:客户端用户界面、模块和数据库,如图1.1所示。传统单体应用的开发…

    Java 2023年5月29日
    082
  • 用户名密码年龄的校验

    用户名: 密码: 确认密码: 年龄: //校验用户名 function usernamecheck(){ //获取dom var username = document.getEl…

    Java 2023年6月7日
    077
  • 一文带你搞懂 JWT 常见概念 & 优缺点

    在 JWT 基本概念详解这篇文章中,我介绍了: 什么是 JWT? JWT 由哪些部分组成? 如何基于 JWT 进行身份验证? JWT 如何防止 Token 被篡改? 如何加强 JW…

    Java 2023年6月9日
    089
  • Nginx(二)-服务模式运行nginx之WINSW

    虽然使用命令行控制ngix很简单,但是如果作为一个服务工作的话能更方便地启动、停止或者设置依赖项。 这里使用开源项目Windows Service Wrapper 来实现。 git…

    Java 2023年5月30日
    092
  • 泛型

    1.给泛型指向数据类型要求是 引用类型,不能是基本数据类型 2.在给泛型指定具体类型后,可以传入该类型或者其子类类型 3.泛型的写法 ​ 常规写法:HashSet set = ne…

    Java 2023年6月5日
    0121
  • session,model,request,servletContext

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

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