GAE上的Java.awt.geom.RectangularShape支持

时间:2012-07-26 15:19:57

标签: google-app-engine

我正在使用Apache POI库来操作PowerPoint文件。 它在GAE上非常适用于检查PPTX文件的内容。 但是,如果我尝试更改PowerPoint文件的内容,则会收到以下GAE错误:

java.lang.NoClassDefFoundError:java.awt.geom.RectangularShape是一个受限制的类。有关详细信息,请参阅Google App Engine开发人员指南。     在com.google.apphosting.runtime.security.shared.stub.java.awt.geom.RectangularShape。(RectangularShape.java)     在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我想知道吗?

1 个答案:

答案 0 :(得分: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 - 请提供用于直接操作Google文档/演示文稿的API。目前唯一的解决方案是将Google演示文稿下载到GAE(内存中),使用Apache POI进行操作,并上传为不同的Google演示文稿。