Java 在PowerPoint文档中嵌入ZIP文件

createh52个月前 (03-12)技术教程22

ZIP文件格式是一种数据压缩和文档储存的文件格式,它属于几种主流的压缩格式之一。本文将介绍如何使用Java代码将ZIP文件嵌入到新建PowerPoint文档中的指定幻灯片

使用工具:Free Spire.Prensentation for Java免费控件

JAR包导入:E-iceblue中文官网获取产品包,解压后在lib文件夹下找到Spire.Presentation.jar,然后手动将其导入Java项目;创建Maven仓库,然后在pom.xml文件中键入以下代码,最后点击“Import Changes”即可导入。


        
            com.e-iceblue
            https://repo.e-iceblue.cn/repository/maven-public/
        


    
         e-iceblue 
        spire.presentation.free
        5.1.0
    

代码示例

Free Spire.Presentation for Java支持给新建PowerPoint文档中的指定幻灯片嵌入ZIP文件,详细步骤如下:

  • 创建一个新的PowerPoint文档并设置幻灯片大小的类型;
  • 使用Presentation.getSlides().get()方法获取特定幻灯片;
  • 加载一个ZIP文件并将其转换为byte[]对象;
  • 加载一个图片,使用Presentation.getImages().append()方法将其添加到幻灯片中作为ZIP文件的展示图片;
  • 使用Islide.getShapes.appendOleObject()方法将ZIP文件嵌入指定幻灯片;
  • 使用IOleObject.getSubstituteImagePictureFillFormat()方法获取OleObject图像填充属性对象,再使用PictureFillFormat.getPicture().setEmbedImage()方法设置嵌入图片;
  • 使用Presentation.saveToFile()方法保存结果文档。
import com.spire.presentation.*;
import com.spire.presentation.drawing.IImageData;
import javax.imageio.ImageIO;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;

public class InsertZIP {
    public static void main(String[] args) throws Exception {
        //创建Presentation对象
        Presentation presentation = new Presentation();
        presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);

        //获取第一个幻灯片
        ISlide slide = presentation.getSlides().get(0);

        //加载一个zip文件并转换为byte[]对象
        String filePath = "C:\\Users\\Test1\\Desktop\\Sample.zip";
        File zipFile = new File(filePath);
        FileInputStream inputStream = new FileInputStream(zipFile);
        byte[] data = new byte[(int) zipFile.length()];
        inputStream.read(data, 0, data.length);

        //加载一个图片作为zip文件的展示图片
        File file = new File("C:\\Users\\Test1\\Desktop\\Image.jpg");
        BufferedImage image = ImageIO.read(file);
        IImageData oleImage = presentation.getImages().append(image);

        //将zip文件嵌入第一个幻灯片
        Rectangle2D rect = new Rectangle2D.Float(60, 60, image.getWidth(), image.getHeight());
        IOleObject oleObject = slide.getShapes().appendOleObject("zip", data, rect);
        oleObject.getSubstituteImagePictureFillFormat().getPicture().setEmbedImage(oleImage);
        oleObject.setProgId("Package");

        //保存文档
        presentation.saveToFile("output/InsertZip.pptx", FileFormat.PPTX_2013);
    }
}

相关文章

Java常用的包(package)有哪些?有什么作用?

常用的包有8个,分别是:1.Java.lang包这个包下包含了Java语言的核心类,如String、Math、Sytem和Thread类等,使用这个包无需使用import语句导入,系统会自动导入这个包...

Node.js开发者必须了解的4个JS要点

Node.js是一个面向服务器的框架,立足于Chrome强大的V8 JS引擎。尽管它由C++编写而成,但是它及其应用是运行在JS上的。本文为开发者总结了4个Node.js要点。1. 非阻塞(Non-b...

Android应用编程基础第22篇:Java中的import

上一篇我们讲了包(package)的概念以及使用。今天我们讲讲如何在一个类中访问其他在不同包中的类的成员,这里我们要学习一个新的关键字import。到目前为止,所介绍的类都是属于同一个包(packag...

maven引入本地jar包的5种方式

maven作为包管理工具,好处不必多说但是有些情况,比如需要引入第三方包,如快递鸟,支付宝,微信等jar包(当然有可能直接提供maven依赖)如果直接下载到本地之后,怎么整合到自己的maven工程呢?...

Idea导入Eclipse代码,导出Jar包(多图慎入)

最近一个朋友叫我帮他维护一个项目,这个项目是用Spring Boot开发的,后端有个定时任务,它不是基于quartz这类框架开发的,而是直接用Eclipse基于JDK1.7开发的工具包,然后借助Lin...