热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

ApachePOI将PPT转换成图片实例代码

这篇文章主要介绍了ApachePOI将PPT转换成图片实例代码,具有一定借鉴价值,需要的朋友可以参考下

本文主要分享的是关于Apache POI将PPT转换成图片的相关内容,简单介绍了Apache POI,具体内容如下。

1、Apache POI 简介

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

可以查看官方文档 Apache POI官网

Apache POI操作PPT文档有两种方式:

1.POI-HSLF 对应的 Powerpoint ‘97(-2007) 的文件格式 – 后缀名为 .ppt
2.POI-XSLF 对应的PowerPoint 2007 OOXML 的文件格式 – 后缀名为 .pptx

2、JAR包

POI 操作office需要的jar包:

    poi-3.12.jar
    poi-ooxml-3.12.jar
    poi-ooxml-schemas-3.12.jar
    poi-scratchpad-3.12.jar
    xmlbeans-2.6.0.jar

maven方式引入:

maven 方式只需要引入两个就可以,因为他们依赖了其他几个

    
      org.apache.poi
      poi-ooxml
      3.12
    
    
      org.apache.poi
      poi-scratchpad
      3.12
    

3、POI-HSLF 方式

POI-HSLF 方式处理PPT以 .ppt 后缀结尾的文档。

/**
   * ppt2003 文档的转换 后缀名为.ppt
   * @param pptFile ppt文件
   * @param imgFile 图片将要保存的目录(不是文件)
   * @return
   */
public static Boolean doPPT2003toImage(File pptFile,File imgFile,List list) {
	try {
		FileInputStream is = new FileInputStream(pptFile);
		SlideShow ppt = new SlideShow(is);
		//及时关闭掉 输入流
		is.close();
		Dimension pgsize = ppt.getPageSize();
		Slide[] slide = ppt.getSlides();
		for (int i = 0; i 

4、POI-XSLF 方式

POI-XSLF 方式处理PPT文件以 .pptx 后缀结尾的文档。

/**
   * ppt2007文档的转换 后缀为.pptx
   * @param pptFile PPT文件
   * @param imgFile 图片将要保存的路径目录(不是文件)
   * @param list 存放文件名的 list
   * @return
   */
public static Boolean doPPT2007toImage(File pptFile,File imgFile,List list) {
	FileInputStream is = null ;
	try {
		is = new FileInputStream(pptFile);
		XMLSlideShow xmlSlideShow = new XMLSlideShow(is);
		is.close();
		// 获取大小
		Dimension pgsize = xmlSlideShow.getPageSize();
		// 获取幻灯片
		XSLFSlide[] slides = xmlSlideShow.getSlides();
		for (int i = 0 ; i  textParagraphs = sh.getTextParagraphs();
					for (XSLFTextParagraph xslfTextParagraph : textParagraphs) {
						List textRuns = xslfTextParagraph.getTextRuns();
						for (XSLFTextRun xslfTextRun : textRuns) {
							xslfTextRun.setFontFamily("宋体");
						}
					}
				}
			}
			//根据幻灯片大小生成图片
			BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);
			Graphics2D graphics = img.createGraphics();
			graphics.setPaint(Color.white);
			graphics.fill(new Rectangle2D.float(0, 0, pgsize.width,pgsize.height));
			// 最核心的代码
			slides[i].draw(graphics);
			//图片将要存放的路径
			String absolutePath = imgFile.getAbsolutePath()+"/"+ (i + 1) + ".jpeg";
			File jpegFile = new File(absolutePath);
			// 图片路径存放
			list.add((i + 1) + ".jpeg");
			//如果图片存在,则不再生成
			if (jpegFile.exists()) {
				continue;
			}
			// 这里设置图片的存放路径和图片的格式(jpeg,png,bmp等等),注意生成文件路径
			FileOutputStream out = new FileOutputStream(jpegFile);
			// 写入到图片中去
			ImageIO.write(img, "jpeg", out);
			out.close();
		}
		log.error("PPT转换成图片 成功!");
		return true;
	}
	catch (Exception e) {
		log.error("PPT转换成图片 发生异常!", e);
	}
	return false;
}

5、可能出现的错误

org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)

出现以上错误,说明是没有对应起来使用,应该使用第二种方式来转换PPT。

有时候核心转换的时候很容易出问题,是因为POI没有做得很好,图片有时候容易失真。

// 最核心的代码
slides[i].draw(graphics);

总结

以上就是本文关于Apache POI将PPT转换成图片实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!


推荐阅读
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • Java使用poi 5.0解析Excel工作簿的例子
    写在之前Excel文档是日常办公中非常普遍的一种数据记录模式。在业务场景中,往往有“导入Excel到某某系统中”的需求,所以这里记录一种使用poi5.0系 ... [详细]
  • 小程序服务器获取用户名头像,微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现...
    这个接口只能获得一些非敏感信息,例如用户昵称,用户头像,经过用户授权允许获取的情况下即可获得用户信息,至于openid这些& ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • jvm内存区域与溢出为什么学习jvm木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时候,那么就需要你对jvm的了解掌握。当一个系统出现内存溢出,内存泄露的时候 ... [详细]
  • 跨站的艺术XSS Fuzzing 的技巧
    作者|张祖优(Fooying)腾讯云云鼎实验室对于XSS的漏洞挖掘过程,其实就是一个使用Payload不断测试和调整再测试的过程,这个过程我们把它叫做F ... [详细]
author-avatar
XL
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有