2011-01-17 25 views
3

Javaを使用してプログラムでスライドを.pngファイルに分割する方法はありますか?私は検索しましたが、答えのほとんどはC#または上記のプログラムのいずれかがオープンソースではありませんでしたJavaを使用してpptスライドを画像として抽出

+0

関連:http://stackoverflow.com/質問/ 3471472とhttp://stackoverflow.com/questions/1475849 – finnw

+0

私はこれを自分でやっていないので、これを回答として投稿しませんが、http://groups.google.com/をご覧ください。グループ/ jodconverter/browse_thread/thread/81ca5ba47d064fcd/a896b5ffe09873ea – Anders

+0

'unix'タグはこの質問には関係していないため、削除しました。 – Davidann

答えて

2

j-interop(http:// wwwのようなJava/COMブリッジを使用する必要があります.j-interop.org /)を使用して、プログラムでPowerPointプロセスを制御し、個々のページをファイルに印刷することができます。あなたはVBAスクリプトを書いたほうがいいかもしれません。まともな品質は、Apache POI HSLFライブラリーで使用する次のコード(http://poi.apache.org/slideshow/how-to-shapes.html)については

3

:ApacheのPOIライブラリと

 FileInputStream is = new FileInputStream("path_to_your.ppt"); 
    SlideShow ppt = new SlideShow(is); 
    is.close(); 

    Dimension pgsize = ppt.getPageSize(); 

    Slide[] slide = ppt.getSlides(); 
    for (int i = 0; i < slide.length; i++) { 

     BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, 1); 

     Graphics2D graphics = img.createGraphics(); 
     graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
     graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); 
     graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
       RenderingHints.VALUE_INTERPOLATION_BICUBIC); 
     graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, 
       RenderingHints.VALUE_FRACTIONALMETRICS_ON); 

     graphics.setColor(Color.white); 
     graphics.clearRect(0, 0, pgsize.width, pgsize.height); 
     graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); 

     // render 
     slide[i].draw(graphics); 

     // save the output 
     FileOutputStream out = new FileOutputStream("slide-" + (i + 1) + ".png"); 
     javax.imageio.ImageIO.write(img, "png", out); 
     out.close(); 
    } 
0

使用次のコード

FileInputStream is = new FileInputStream("D:\\PPT sample.ppt"); 
    XMLSlideShow ppt = new XMLSlideShow(is); 
    is.close(); 

    Dimension pgsize = ppt.getPageSize(); 

    XSLFSlide[] slide = ppt.getSlides(); 
    for (int i = 0; i < slide.length; i++) { 

     BufferedImage img = new BufferedImage(pgsize.width, pgsize.height, BufferedImage.SCALE_SMOOTH); 
     Graphics2D graphics = img.createGraphics(); 
     //clear the drawing area 
     graphics.setPaint(Color.white); 
     graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height)); 

     //render 
     slide[i].draw(graphics); 

     //save the output 
     FileOutputStream out = new FileOutputStream("D:\\slide-" + (i+1) + ".JPG"); 
     javax.imageio.ImageIO.write(img, "JPG", out); 
     out.close(); 
関連する問題