JACOB的方法,足可以解決這個(gè)問題,但是我既然以前曾經(jīng)做過報(bào)表,就想嘗試不同的方法。
10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有紫云免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。JACOB是一座連接JAVA和微軟的橋,所有的解析由微軟解析。POI是沒有微軟解析的那么原汁原味的,所以如果要求高的話,還是使用JACOB。
大致思路很簡(jiǎn)單,將PPT先轉(zhuǎn)化為圖片,然后將圖片寫入PDF。轉(zhuǎn)化圖片是用POI,操作PDF使用ITEX。不過這個(gè)方法的BUG就是轉(zhuǎn)化圖片的POI效果不是很好。
導(dǎo)入的包分別是:itextpdf-5.1.3.jar,poi-3.8-20120326.jar,poi-scratchpad-3.8-20120326.jar。
然后貼代碼了:
代碼沒有進(jìn)行參數(shù)統(tǒng)一,寫兩個(gè)方法:
package com.zzk.cn; import java.awt.Dimension; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import org.apache.poi.hslf.model.TextRun; import org.apache.poi.hslf.record.Slide; import org.apache.poi.hslf.usermodel.RichTextRun; import org.apache.poi.hslf.usermodel.SlideShow; public class PPTtoImage { public static void main(String[] args) { // 讀入PPT文件 File file = new File("D:/書本JVM總結(jié)7-9.ppt"); doPPTtoImage(file); } public static boolean doPPTtoImage(File file) { boolean isppt = checkFile(file); if (!isppt) { System.out.println("你指定的文件不是ppt文檔!"); return false; } try { FileInputStream is = new FileInputStream(file); SlideShow ppt = new SlideShow(is); is.close(); Dimension pgsize = ppt.getPageSize(); org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides(); for (int i = 0; i < slide.length; i++) { System.out.print("第" + i + "頁。"); if (slide[i].getNotesSheet() != null && slide[i].getNotesSheet().getTextRuns() != null) { // 獲取第一個(gè)備注 System.out.println("備注:" + slide[i].getNotesSheet().getTextRuns()[0] .getText()); } 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++) { rtruns[l].setFontIndex(1); rtruns[l].setFontName("宋體"); // 獲取文本列表 System.out.println(rtruns[l].getText()); } } 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); // 這里設(shè)置圖片的存放路徑和圖片的格式(jpeg,png,bmp等等),注意生成文件路徑 FileOutputStream out = new FileOutputStream("D:/testImage/pict_" + (i + 1) + ".jpeg"); javax.imageio.ImageIO.write(img, "jpeg", out); out.close(); } System.out.println("ok"); return true; } catch (FileNotFoundException e) { System.out.println(e); } catch (IOException e) { e.printStackTrace(); } return false; } // function 檢查文件是否為PPT public static boolean checkFile(File file) { boolean isppt = false; String filename = file.getName(); String suffixname = null; if (filename != null && filename.indexOf(".") != -1) { suffixname = filename.substring(filename.indexOf(".")); if (suffixname.equals(".ppt")) { isppt = true; } return isppt; } else { return isppt; } } }
分享標(biāo)題:java實(shí)現(xiàn)PPT轉(zhuǎn)化為PDF-創(chuàng)新互聯(lián)
鏈接地址:http://aaarwkj.com/article28/dgddcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、微信小程序、靜態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站、App開發(fā)、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容