2013-02-01 50 views
3

的Apache的POI項目介紹瞭如何從一個PowerPoint幻燈片http://poi.apache.org/slideshow/xslf-cookbook.html#GetShapes添加形狀到PowerPoint幻燈片使用XSLF(Apache的POI項目)

但是讀的形狀,我無法找到如何將圖形添加到任何文檔使用這部分庫的幻燈片幻燈片。如果我用一箇舊的PowerPoint格式(PPT,而不是PPTX),我可以只使用libaray的HSLF一部分,並做到:

SlideShow ppt = new SlideShow(); 
//add first slide 
Slide s1 = ppt.createSlide(); 

// create shapes./ 
java.awt.geom.GeneralPath path = new java.awt.geom.GeneralPath(); 
path.moveTo(100, 100); 
path.lineTo(200, 100); 
path.curveTo(50, 45, 134, 22, 78, 133); 
path.curveTo(10, 45, 134, 56, 78, 100); 
path.lineTo(100, 200); 
path.closePath(); 

Freeform shape = new Freeform(); 
shape.setPath(path); 
s1.addShape(shape); 

//save changes in a file 
FileOutputStream out; 
try { 
    out = new FileOutputStream("slideshow.ppt"); 
    ppt.write(out); 
    out.close(); 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException ex) { 
    e.printStakTrace(); 
} 

我怎麼會做同樣的事情使用該庫的xlsf一部分,從而產生一個pptx?

感謝

回答

4

這其實很相似......

XMLSlideShow ppt = new XMLSlideShow(); 
XSLFSlide s1 = ppt.createSlide(); 

// create shapes 
java.awt.geom.Path2D.Double path = new java.awt.geom.Path2D.Double(); 
path.moveTo(100, 100); 
path.lineTo(200, 100); 
path.curveTo(50, 45, 134, 22, 78, 133); 
path.curveTo(10, 45, 134, 56, 78, 100); 
path.lineTo(100, 200); 
path.closePath(); 

XSLFFreeformShape shape = s1.createFreeform(); 
shape.setPath(path); 
shape.setLineWidth(1); 
shape.setLineColor(Color.BLACK); 

//save changes in a file 
FileOutputStream out; 
try { 
    out = new FileOutputStream("slideshow.pptx"); 
    ppt.write(out); 
    out.close(); 
} catch (Exception ex) { 
    ex.printStackTrace(); 
} 

更多的例子和Graphics2D背景下,你可以畫上,有我的PptxGraphics2D類看看。

+0

看起來你不能創建除自由形狀以外的任何東西嗎? –

+0

@JamesMcLaughlin你試過了什麼?你能發佈一個pastebin(或類似的)鏈接嗎? – kiwiwings

相關問題