Spring boot使用Aspose.Slides操作ppt转PDF、转图片
最近要将ppt转为PDF和图片,Apache poi ,jacob都试了下
Apache poi 转图片乱码,处理了,还会存在部分乱码
jacob对系统依赖比较大,必须是windows还得安装MS Office,如果同时安装了WPS,还会调用WPS处理,还出现异常
因此换成了Aspose.Slides,这个是商用的,带有水印
本文使用的是去除水印的 aspose.slides-19.3.jar( 获取资源 提取码:zhb8)
去除水印的方法 查看
1.创建spring boot项目

2.准备
(1)导入Aspose.Slides的jar包
(2)将license.xml,放到src/main/resources下

(3)修改pom.xml
<dependency>
<groupId>aspose.slides</groupId>
<artifactId>slides</artifactId>
<version>19.3</version>
<scope>system</scope>
<systemPath>${basedir}/lib/aspose.slides-19.3.jar</systemPath>
</dependency>
3.转PDF

目标文件data/CoreThink.pptx
pdf保存data/CoreThink.pdf
package com.slides.ppt.controller; import com.aspose.slides.License;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import org.springframework.web.bind.annotation.*; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream; @RestController
@RequestMapping("/api")
public class TestOperation { private static InputStream license;
/**
* 获取license
*
* @return
*/
public static boolean getLicense() { boolean result = false;
license = TestOperation.class.getClassLoader().getResourceAsStream("license.xml");
if (license != null) {
License aposeLic = new License();
aposeLic.setLicense(license);
result = true;
}
return result;
} /**
* 转PDF
*
* @return
*/
@PostMapping("/convertPDF")
public String convertPDF() {
// 验证License
if (!getLicense()) {
return "验证License失败";
}
try {
FileInputStream fileInput = new FileInputStream("data/CoreThink.pptx");
Presentation pres = new Presentation(fileInput);
FileOutputStream out = new FileOutputStream(new File("data/CoreThink.pdf"));
pres.save(out, SaveFormat.Pdf);
out.close();
} catch (Exception e) {
return e.getMessage();
}
return "转换成功";
}
}
4.转图片

目标文件data/CoreThink.pptx
图片保存路径为 文件名_JPG即CoreThink_JPG
package com.slides.ppt.controller; import com.aspose.slides.ISlide;
import com.aspose.slides.License;
import com.aspose.slides.Presentation;
import org.springframework.web.bind.annotation.*; import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream; @RestController
@RequestMapping("/api")
public class TestOperation { private static InputStream license;
/**
* 获取license
*
* @return
*/
public static boolean getLicense() { boolean result = false;
license = TestOperation.class.getClassLoader().getResourceAsStream("license.xml");
if (license != null) {
License aposeLic = new License();
aposeLic.setLicense(license);
result = true;
}
return result;
} /**
* 转Image
*
* @return
*/
@PostMapping("/convertImage")
public String convertImage() {
// 验证License
if (!getLicense()) {
return "验证License失败";
}
String fileName = "data/CoreThink.pptx";
File file = new File(fileName);
if (!file.exists()) {
return "转换文件不存在";
}
String filePath = file.getParent()+File.separator;
String dest = filePath + getFileNameNoEx(file.getName())+"_JPG";
File destPath = new File(dest);
if (!destPath.exists()) {
destPath.mkdir();
}
try {
FileInputStream fileInput = new FileInputStream(fileName);
Presentation pres = new Presentation(fileInput);
int i;
for (i = 0; i < pres.getSlides().size(); i++) {
ISlide slide = pres.getSlides().get_Item(i);
int height = (int)(pres.getSlideSize().getSize().getHeight()-150);
int width = (int)(pres.getSlideSize().getSize().getWidth()-150);
BufferedImage image = slide.getThumbnail(new java.awt.Dimension(width, height));
//每一页输出一张图片
File outImage = new File(dest+File.separator + (i+1) + ".JPG");
ImageIO.write(image, "JPG", outImage);
}
} catch (Exception e) {
return e.getMessage();
}
return "转换成功";
}
/**
* 获取文件名,去除扩展名的
*
* @param filename
* @return
*/
private String getFileNameNoEx(String filename) {
if ((filename != null) && (filename.length() > 0)) {
int dot = filename.lastIndexOf('.');
if ((dot > -1) && (dot < (filename.length()))) {
return filename.substring(0, dot);
}
}
return filename;
} }
说明:
如果没有验证License,输出的会带水印的,因此要保证 license.xml 能读取成功,并做验证
注意:
资源文件只允许学习使用,不得用于商业用途,请购买授权正版 aspose官网
Spring boot使用Aspose.Slides操作ppt转PDF、转图片的更多相关文章
- Spring Boot(二):数据库操作
本文主要讲解如何通过spring boot来访问数据库,本文会演示三种方式来访问数据库,第一种是JdbcTemplate,第二种是JPA,第三种是Mybatis.之前已经提到过,本系列会以一个博客系统 ...
- Aspose.Words操作word生成PDF文档
Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...
- spring boot编程思想(核心篇) pdf 下载 it教程
资料简介:本书是<Spring Boot 编程思想>的核心篇,开篇总览Spring Boot核心特性,接着讨论自动装配(Auto-Configuration)与SpringApplicat ...
- Spring Boot实战之数据库操作
上篇文章中已经通过一个简单的HelloWorld程序讲解了Spring boot的基本原理和使用.本文主要讲解如何通过spring boot来访问数据库,本文会演示三种方式来访问数据库,第一种是Jdb ...
- spring boot ----> jpa连接和操作mysql数据库
环境: centos6.8,jdk1.8.0_172,maven3.5.4,vim,spring boot 1.5.13,mysql-5.7.23 1.引入jpa起步依赖和mysql驱动jar包 &l ...
- spring boot通过Jedis来操作redis
idea中新建spring boot项目,引入jedis依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> ...
- 使用spring boot中的JPA操作数据库
前言 Spring boot中的JPA 使用的同学都会感觉到他的强大,简直就是神器一般,通俗的说,根本不需要你写sql,这就帮你节省了很多时间,那么下面我们来一起来体验下这款神器吧. 一.在pom中添 ...
- Spring Boot 使用 Dom4j XStream 操作 Xml
Xml 现在仍然占据着比较重要的地位,比如微信接口中使用了 Xml 进行消息的定义.本章重点讨论 Xml 的新建.编辑.查找.转化,可以这么理解,本章是使用了 dom4j.xstream 也是在开发者 ...
- 阿里云服务器 配置 tomcat 发布spring boot项目 的具体操作 【使用公网ip】
1.前言 spring boot 转成war包 后用tomcat发布的具体操作在我另一篇随笔有详细记载,不论是window系统还是Linux系统,tomcat的发布配置都是一样的,所以这里不具体讲这个 ...
随机推荐
- appium+python自动化64-使用Uiautomator2执行driver.keyevent()方法报错解决
前言 未加'automationName': 'Uiautomator2'参数使用Uiautomator可以正常使用driver.keyevent()方法,使用Uiautomator2时driver. ...
- vs code c/c++编程配置文件
之前的C语言课程老师只讲了C没有接触C++,但是觉得C++挺重要的,而且python和java再去转exe有点麻烦,所以还是学一下C++. 问过朋友推荐了几个IDE,最后他用的是visual stud ...
- javascript慕课入门
1.javascript引用 html里引用: <script type="text/javascript"> ... ... </script> 引用外部 ...
- area标签的使用,图片中某一个部分可以点击跳转,太阳系中点击某个行星查看具体信息
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- BCB6 如何跨工程(Project)进行源码级调试
如何跨工程(Project)进行源码级调试 在日常工作中,如何跨工程(Project)进行源码级调试这是个无法回避的问题.例如:一个应用程序工程为“prj_A”,一个动态库工程为“prj_B”,“pr ...
- 【2019.11.13】SDN上机第3次作业
参考资料:https://www.cnblogs.com/fjlinww/p/11834092.html 实验一 利用Mininet仿真平台构建如下图所示的网络拓扑,配置主机h1和h2的IP地址(h1 ...
- 腾讯云手动搭建nginx+php-fpm并自启动
自己一点小爱好,搭建了一个小网站植物大战僵尸百科, 使用的是腾讯云,市场里的镜像不好用,所以自己手动搭建一波. centos 7 编译安装 php-7.2.11的步骤 在官网下载php-7.2.11的 ...
- maven工程中MENIFEST.MF中属性作用
Manifest-Version: 版本号 Bundle-ManifestVersion: bundle的版本号 Bundle-Name: bundle的名称,主要是对bundle的作用的说明 Bun ...
- 关于高负载服务器Kernel的ipv4的TCP参数说明及优化
net.ipv4.tcp_mem 内核分配给TCP连接的内存,单位是Page,1 Page = 4096 Bytes,可用命令查看: #getconf PAGESIZE 4096 net.ipv4.t ...
- IDEA版本控制忽略文件或目录
写在前面 废话不多说了, 新创建了个helloworld, 见图: 这谁受得了啊 修改配置 在上图红框内部的后面添加: *.iml;*.idea;*.gitignore;*.sh;*.classpat ...