国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

java實現(xiàn)PPT轉(zhuǎn)化為PDF

2024-07-14 08:41:11
字體:
供稿:網(wǎng)友

JACOB的方法,足可以解決這個問題,但是我既然以前曾經(jīng)做過報表,就想嘗試不同的方法。

JACOB是一座連接JAVA和微軟的橋,所有的解析由微軟解析。POI是沒有微軟解析的那么原汁原味的,所以如果要求高的話,還是使用JACOB。

大致思路很簡單,將PPT先轉(zhuǎn)化為圖片,然后將圖片寫入PDF。轉(zhuǎn)化圖片是用POI,操作PDF使用ITEX。不過這個方法的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)一,寫兩個方法:

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) {           // 獲取第一個備注           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;     }   } } 

第二段代碼:

package com.zzk.cn;  import java.io.FileOutputStream; import java.io.IOException;  import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Image; import com.itextpdf.text.pdf.PdfWriter;  public class ImagetoPDF {      public static void main(String[] args) {          System.out.println("Chapter 6 example 3: using a relative path for HTML");          // step 1: creation of a document-object     Document document = new Document();          try {              // step 2:       // we create a writer that listens to the document       // and directs a PDF-stream to a file              PdfWriter.getInstance(document, new FileOutputStream("D:/測試圖片.pdf"));      // HtmlWriter writer = HtmlWriter.getInstance(document, new FileOutputStream("Chap0603.html"));             // writer.setImagepath("../../images/kerstmis/");              // step 3: we open the document       document.open();              for(int i=1;i<=7;i++) {       // step 4: we add content       Image jpg = Image.getInstance("D:/testImage/pict_"+i+".jpeg");       jpg.scalePercent(50);       document.add(jpg);       }            }     catch(DocumentException de) {       System.err.println(de.getMessage());     }     catch(IOException ioe) {       System.err.println(ioe.getMessage());     }          // step 5: we close the document     document.close();   } } 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 景泰县| 安阳县| 军事| 无棣县| 玉溪市| 湘潭县| 恩施市| 信丰县| 长乐市| 临海市| 固原市| 彝良县| 白沙| 炉霍县| 缙云县| 永修县| 海林市| 大竹县| 漳浦县| 垫江县| 隆德县| 雅安市| 松阳县| 涟水县| 阿荣旗| 彭阳县| 五华县| 行唐县| 天水市| 龙泉市| 吉安县| 平邑县| 麦盖提县| 东兰县| 新疆| 汪清县| 惠安县| 黄浦区| 高清| 祁阳县| 潞城市|