【问题标题】:Java.awt.geom.RectangularShape support on GAEGAE 上的 Java.awt.geom.RectangularShape 支持
【发布时间】:2012-07-25 05:34:19
【问题描述】:

我正在使用 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?

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    所以我已经设法为使用 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 文档/演示文稿。目前唯一的解决方案是将 Google 演示文稿下载到 GAE(内存中),使用 Apache POI 进行操作,然后作为不同的 Google 演示文稿上传。

    【讨论】:

      猜你喜欢
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 2013-08-21
      • 1970-01-01
      相关资源
      最近更新 更多