2012-07-26 31 views
0

我正在使用Apache POI庫來處理PowerPoint文件。 它對GAE檢查PPTX文件的內容非常有效。 但是,如果我嘗試更改PowerPoint文件的內容,則會出現以下GAE錯誤:GAE上的Java.awt.geom.RectangularShape支持

java.lang.NoClassDefFoundError:java.awt.geom.RectangularShape是一個受限制的類。有關更多詳細信息,請參閱Google App Engine開發人員指南。 at com.google.apphosting.runtime.security.shared.stub.java.awt.geom.RectangularShape。(RectangularShape.java) at org.apache.poi.xslf.usermodel.XSLFSimpleShape.getAnchor(XSLFSimpleShape.java:176 )

有沒有人有任何經驗,解決這個問題或在GAE類似的java.awt問題? 我正在考慮黑客入侵Apache POI源代碼,但寧願在GAE中使用某種本地化的java.awt支持。我已經做了一些研究,並且:

1)GAE提出了很多關於java.awt支持的問題,並且已被接受爲問題。想知道這是否在內部取得進展?它被接受於2011年8月。

2)有一個項目:http://code.google.com/p/appengine-awt/這是java.awt的純java實現。這是否支持java.awt.geom.RectangularShape我想知道?

回答

0

所以我設法爲其他感興趣的使用GAE的Apache POI用戶解決了這個問題。 您可以對預定義的PowerPoint模板執行一些操作,只需避免使用底層java.awt庫(在GAE上受到限制)的任何方法。我的問題是使用createSlide()和importContent()方法。我只需要修改文本以便在內存版本的PPT文件上使用:

XSLFShape[] shapes = slide.getShapes(); 
    for (XSLFShape shape : shapes) { 
     if (shape instanceof XSLFTextShape) { 
      XSLFTextShape textShape = (XSLFTextShape)shape; 

      switch (shape.getShapeId()) 
      case 1: 
       textShape.setText("1st text box"); 

解決了我的問題。

請求谷歌 - 請提供一個用於直接操作Google文檔/演示文稿的API。目前唯一的解決方案是將Google演示文稿下載到GAE(內存中),使用Apache POI進行操作,並作爲其他Google演示文稿上傳。