2012-01-21 8 views
1

私はPowerPointPresentation(.ppt)を使って.pptファイルをANDROID PLATFORMの.pngイメージに変換しています。これを実装するには、Apache Poi Apiを使用します。 slide classには、draw(java.awt.Graphics2D graphics)というパラメータが渡されますが、このパラメータはGraphics2Dですが、Androidではこのクラスはサポートされていません。代わりにcanvasを使用します。私の質問はこれです。これはAndroid用の同等のdraw(java.awt.Graphics2D graphics)メソッドです。 Apiを書き直さなければならない。だから、JavaのGraphics2Dのに非常に似て、ここで、このコードアンドロイドに相当する描画(java.awt.Graphics2Dグラフィックス)メソッドは何ですか?

public final class PPT2PNG { 

public static void main(String args[]) throws Exception { 

    File file = new File("C:/Users/THIYAGARAJAN/Desktop/ppt52.ppt"); 
    int scale = 10; 
    int slidenum = 0; 

    FileInputStream is = new FileInputStream(file); 
    SlideShow ppt = new SlideShow(is); 
    is.close(); 

    Dimension pgsize = ppt.getPageSize(); 
    int width = (int) (pgsize.width * scale); 
    int height = (int) (pgsize.height * scale); 
    System.out.println("w" + width + "h" + height); 

    Slide[] slide = ppt.getSlides(); 
    System.out.println(slide.length); 
    for (int i = 0; i < slide.length; i++) { 
     String title = slide[i].getTitle(); 
     System.out.println("Rendering slide " + slide[i].getSlideNumber() + (title == null ? "" : ": " + title)); 

     BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
     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.setPaint(Color.white); 
     graphics.fill(new Rectangle2D.Float(0, 0, width, height)); 

     graphics.scale((double) width/pgsize.width, (double) height/pgsize.height); 

     slide[i].draw(graphics); 

     //String fname = file.getAbsolutePath() .replaceAll(".ppt", "-" + (i+1) + ".png"); 
     File fname = new File("C:/Users/THIYAGARAJAN/Desktop/" + i + ".png"); 
     FileOutputStream out = new FileOutputStream(fname); 
     ImageIO.write(img, "png", out); 
     out.close(); 
    } 
} 

private static void usage() { 
    System.out.println("Usage: PPT2PNG [-scale <scale> -slide <num>] ppt"); 
} 

}

答えて

2

AndroidはCanvasクラスを持っている、ために私の最善の提案を与えます。私は特にスライド[i]を.draw(グラフィックス)アンドロイドで上記のコードをしたい、このlink.

(私が正しくあなたを理解していれば)

+0

を見てください。 – Thiyagu

関連する問題