亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Apache POI將PPT轉換成圖片實例代碼

2024-07-13 10:16:37
字體:
來源:轉載
供稿:網友

本文主要分享的是關于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/115642.html">point ‘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 方式只需要引入兩個就可以,因為他們依賴了其他幾個

    <dependency>      <groupId>org.apache.poi</groupId>      <artifactId>poi-ooxml</artifactId>      <version>3.12</version>    </dependency>    <dependency>      <groupId>org.apache.poi</groupId>      <artifactId>poi-scratchpad</artifactId>      <version>3.12</version>    </dependency>

3、POI-HSLF 方式

POI-HSLF 方式處理PPT以 .ppt 后綴結尾的文檔。

/**   * ppt2003 文檔的轉換 后綴名為.ppt   * @param pptFile ppt文件   * @param imgFile 圖片將要保存的目錄(不是文件)   * @return   */public static Boolean doPPT2003toImage(File pptFile,File imgFile,List<String> 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 < slide.length; i++) {			log.info("第" + i + "頁。");			TextRun[] truns = slide[i].getTextRuns();			for (int k = 0; k < truns.length; k++) {				RichTextRun[] rtruns = truns[k].getRichTextRuns();				for (int l = 0; l < rtruns.length; l++) {					// 原有的字體索引 和 字體名字					int index = rtruns[l].getFontIndex();					String name = rtruns[l].getFontName();					log.info("原有的字體索引 和 字體名字: "+index+" - "+name);					// 重新設置 字體索引 和 字體名稱 是為了防止生成的圖片亂碼問題					rtruns[l].setFontIndex(1);					rtruns[l].setFontName("宋體");				}			}			//根據幻燈片大小生成圖片			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));			slide[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;}

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<String> 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 < slides.length ; i++) {			// 解決亂碼問題			XSLFShape[] shapes = slides[i].getShapes();			for (XSLFShape shape : shapes) {				if (shape instanceof XSLFTextShape) {					XSLFTextShape sh = (XSLFTextShape) shape;					List<XSLFTextParagraph> textParagraphs = sh.getTextParagraphs();					for (XSLFTextParagraph xslfTextParagraph : textParagraphs) {						List<XSLFTextRun> 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轉換成圖片實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91性高湖久久久久久久久_久久99| 久久在线观看视频| 亚洲网站在线播放| 欧美日韩激情小视频| 久久精品99无色码中文字幕| 亚洲jizzjizz日本少妇| 日韩精品极品在线观看| 亚洲图片欧美午夜| 中文字幕一精品亚洲无线一区| 欧美国产精品人人做人人爱| 美女撒尿一区二区三区| 欧美黑人视频一区| 国产精品aaaa| 精品国产乱码久久久久久婷婷| 欧美性极品xxxx娇小| 日韩精品视频在线免费观看| 亚洲欧洲免费视频| 国产精品久久久一区| 亚洲一级一级97网| 日韩精品中文字幕在线观看| 国产精品久久久亚洲| 少妇高潮久久77777| 欧美成人久久久| 国产成+人+综合+亚洲欧洲| 日韩电影免费观看在线| 成人xxxxx| 国产一区二区视频在线观看| 欧美视频在线视频| 欧美做受高潮1| 国产精品久久久久91| 亚洲一区二区三区777| 懂色av中文一区二区三区天美| 欧美中文字幕在线视频| 国产精品成人免费视频| 精品无人区乱码1区2区3区在线| 91在线观看免费高清完整版在线观看| 欧美激情中文字幕乱码免费| 欧美激情视频在线观看| 亚洲另类图片色| 欧美电影免费播放| 91在线观看免费| 国产日韩在线看片| 国产欧美亚洲视频| 欧美精品免费看| 欧美激情2020午夜免费观看| 亚洲aaa激情| 国产精品入口日韩视频大尺度| 自拍偷拍亚洲一区| 国产欧美日韩丝袜精品一区| 欧美网站在线观看| 亚洲激情在线视频| 最近2019年手机中文字幕| 久久69精品久久久久久国产越南| 国产亚洲人成a一在线v站| 欧美精品免费看| 超碰97人人做人人爱少妇| 精品美女久久久久久免费| 欧美视频免费在线观看| 成人午夜在线影院| 国产亚洲精品激情久久| 国产美女高潮久久白浆| 中文欧美日本在线资源| 欧美人在线观看| 亚洲视频在线观看网站| 国产日韩欧美电影在线观看| 欧美精品日韩三级| 亚洲欧美日韩国产中文专区| 久久天天躁狠狠躁夜夜躁| 成人av在线网址| 国产视频在线观看一区二区| 成人欧美在线视频| 国产亚洲欧美另类中文| 日韩乱码在线视频| 91精品国产综合久久香蕉922| 国产欧美精品日韩精品| 欧美视频免费在线观看| 久久精品91久久香蕉加勒比| 欧美亚洲视频一区二区| 国产精品99久久99久久久二8| 亚洲国产精久久久久久久| 久久6免费高清热精品| 亚洲最大的网站| 欧美一区二区三区图| 久久夜色精品亚洲噜噜国产mv| 亚洲成av人乱码色午夜| 亚洲一区中文字幕| 欧美xxxwww| 中文字幕亚洲一区二区三区| 亚洲成人精品久久| **欧美日韩vr在线| 亚洲欧美国产精品久久久久久久| 欧美理论电影网| 91成人在线视频| 91精品在线国产| 久久婷婷国产麻豆91天堂| 欧美激情一区二区久久久| 欧美在线免费观看| 97色在线视频观看| 日韩成人网免费视频| 精品美女永久免费视频| 久久精品国产视频| 国产精品福利在线| 青草青草久热精品视频在线网站| 国产精品视频不卡| 亚洲第一精品久久忘忧草社区| 亚洲有声小说3d| 热re99久久精品国产66热| 亚洲人成伊人成综合网久久久| 在线电影av不卡网址| 国产69精品久久久久9999| 国产亚洲视频在线| 91精品久久久久久久久久久久久| 91精品国产综合久久香蕉922| 亚洲自拍另类欧美丝袜| 欧美成人合集magnet| 日韩国产欧美精品一区二区三区| 久久夜色精品亚洲噜噜国产mv| 日韩av片免费在线观看| 91在线播放国产| 高清欧美性猛交xxxx黑人猛交| 亚洲精品在线观看www| 亚洲精品白浆高清久久久久久| 国产午夜精品一区理论片飘花| 欧美xxxx18性欧美| 国产欧美日韩丝袜精品一区| 日本欧美一级片| 91精品国产综合久久久久久蜜臀| 俺也去精品视频在线观看| 色多多国产成人永久免费网站| 国产手机视频精品| 精品久久久久久国产91| 久久亚洲成人精品| 91久久久久久国产精品| 97超碰国产精品女人人人爽| 亚洲第一网站男人都懂| 日韩中文字幕久久| 在线观看久久久久久| 久久国产精品视频| 伦伦影院午夜日韩欧美限制| 欧美在线视频播放| 97人人模人人爽人人喊中文字| 精品综合久久久久久97| 日韩精品免费视频| 欧美日韩国产精品一区二区不卡中文| 俺去啦;欧美日韩| 日韩精品久久久久久久玫瑰园| 亚洲伊人久久综合| 亚洲精品一区二区三区婷婷月| 最新国产精品亚洲| 亚洲成色777777在线观看影院| 国产精品爱久久久久久久| 亚洲**2019国产| 亚洲已满18点击进入在线看片| 日韩av成人在线| 精品中文字幕在线| 欧美亚洲免费电影| 在线看日韩欧美| 亚洲欧美一区二区三区四区| 俺去亚洲欧洲欧美日韩| 国产aaa精品| 91手机视频在线观看| 日本成人免费在线| 日韩精品在线免费播放| 欧美wwwxxxx|