자바,PPT 를 PDF 로 변환

6172 단어 자바pptpdf
JACOB 의 방법 은 충분히 이 문 제 를 해결 할 수 있 지만,나 는 이전에 보고 서 를 작성 한 적 이 있 는 이상 다른 방법 을 시도 해 보고 싶다.
JACOB 는 JAVA 와 마이크로소프트 를 연결 하 는 다리 로 모든 해석 은 마이크로소프트 가 분석한다.POI 는 마이크로소프트 가 해석 한 것 처럼 오리지널 맛 이 없 기 때문에 요구 가 높 으 면 JACOB 를 사용한다.
대체적인 사고방식 은 매우 간단 하 다.PPT 를 먼저 그림 으로 바 꾼 다음 에 그림 을 PDF 에 쓴다.그림 전환 은 POI 를 사용 하고 PDF 를 조작 할 때 ITEX 를 사용 합 니 다.하지만 이 방법의 버그 는 그림 을 바 꾸 는 POI 효과 가 좋 지 않다 는 것 이다.
가 져 온 가방 은 itextpdf-5.1.3.jar,poi-3.8-2010326.jar,poi-scratchpad-3.8-2010326.jar 입 니 다.
그리고 코드 를 붙 였 습 니 다.
코드 가 매개 변 수 를 통일 하지 않 았 습 니 다.두 가지 방법 을 쓰 십시오.

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  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); 
        //                  (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(); 
  } 
} 
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기