Jacob의 방법은이 문제를 해결할 수 있지만 이전에 보고서를 작성 했으므로 다른 방법을 시도하고 싶습니다.
Jacob은 Java와 Microsoft를 연결하는 다리이며 모든 결의안은 Microsoft에 의해 구문 분석됩니다. POI는 Microsoft Parsed만큼 정통하지 않으므로 요구 사항이 높으면 Jacob을 사용하십시오.
일반적인 아이디어는 매우 간단합니다. 먼저 ppt를 그림으로 변환 한 다음 그림을 PDF에 씁니다. POI를 사용하여 그림을 변환하고 ITEX를 사용하여 PDF를 작동하십시오. 그러나이 방법의 버그는 그림을 변환하는 POI 효과가 그리 좋지 않다는 것입니다.
가져온 패키지는 다음과 같습니다. itextpdf-5.1.3.jar, poi-3.8-20120326.jar, poi-scratchpad-3.8-20120326.jar.
그런 다음 코드가 게시되었습니다.
코드는 매개 변수 통합을 수행하지 않고 두 가지 방법을 작성합니다.
패키지 com.zzk.cn; java.awt.dimension import; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundException; import java.io.fileoutputStream; import java.io.ioexception; import java.awt.color; java.awt.dimension import; import java.awt.graphics2d; import java.awt.geom.rectangle2d; java.awt.image.bufferedimage import; 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 파일 파일에서 읽습니다. 파일 파일 = 새 파일 ( "d :/book jvm summary 7-9.ppt"); doppttoimage (파일); } public static boolean doppttoimage (파일 파일) {boolean isppt = checkfile (파일); if (! isppt) {system.out.println ( "지정된 파일은 ppt 문서가 아닙니다!"); 거짓을 반환합니다. } try {fileInputStream은 = new FileInputStream (file); 슬라이드 쇼 ppt = 새로운 슬라이드 쇼 (IS); is.close (); 치수 pgsize = ppt.getPagesize (); org.apache.poi.hslf.model.slide [] 슬라이드 = ppt.getSlides (); for (int i = 0; i <slide.length; i ++) {system.out.print ( "th" + i + "page."); if (slide [i] .getNotessHeet ()! = null && 슬라이드 [i] .getNotessHeet (). getTexTruns ()! = null) {// 첫 번째 노트 시스템을 가져옵니다. } textrun [] truns = 슬라이드 [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 emptangle2d.float (0, 0, pgsize.width, pgsize.height)); 슬라이드 [i] .Draw (그래픽); // 이미지의 스토리지 경로와 이미지의 형식 (jpeg, png, bmp 등)을 설정하고 생성 된 파일 경로 파일 파일 아웃 putStream out에주의를 기울입니다. javax.imageio.imageio.write (img, "jpeg", out); out.close (); } system.out.println ( "OK"); 진실을 반환하십시오. } catch (filenotfoundException e) {System.out.println (e); } catch (ioexception e) {e.printstacktrace (); } false를 반환합니다. } // 함수 파일이 ppt public static boolean checkfile (파일 파일)인지 확인하십시오 {boolean isppt = false; 문자열 filename = file.getName (); 문자열 접미사 이름 = null; if (filename! = null && filename.indexof ( ".")! = -1) {wiffixname = filename.substring (filename.indexof ( ".")); if (wiffixname.equals ( ". ppt")) {isppt = true; } return isppt; } else {return isppt; }}}두 번째 코드 :
패키지 com.zzk.cn; import java.io.fileoutputStream; import java.io.ioexception; import com.ithtpdf.text.document; import com.ithtpdf.text.documentException; import com.ithtpdf.text.image; import com.ithtpdf.text.pdf.pdfwriter; public class imageTopdf {public static void main (String [] args) {System.out.println ( "6 장 예제 3 : HTML의 상대 경로 사용"); // 1 단계 : 문서 문서 작성 문서 = 새 문서 (); 시도 {// 2 단계 : // 우리는 문서를 듣는 작가를 만듭니다. // htmlwriter writer = htmlwriter.getInstance (문서, 새 파일 OutputStream ( "Chap0603.html")); // writer.setImagePath ( "../../ 이미지/KERSTMIS/"); // 3 단계 : 문서 문서를 엽니 다. for (int i = 1; i <= 7; i ++) {// 4 단계 : 컨텐츠 이미지 jpg = image.getInstance ( "d :/testimage/pick _"+i+". jpeg"); jpg.scalepercent (50); document.add (jpg); }} catch (DocumentException de) {System.err.println (de.getMessage ()); } catch (ioexception ioe) {System.err.println (ioe.getMessage ()); } // 5 단계 : 문서 문서를 닫습니다 .Close (); }} 위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.