当前位置: 首页 > 知识库问答 >
问题:

与apache poi相关的问题

吕高寒
2023-03-14

我正面临一个问题,比如我使用apache POI生成pptx powerpoint演示文稿,所以生成的ppt可以用libra office打开,但当我试图在ms powerpoint中打开时,它产生了一些问题,比如我在演示文稿中插入的图像无法显示。我将json数组中的字节编码字符串传递给我的服务。有人能帮我吗?有什么问题吗?谢谢

public  Response  generatePptDocument(JSONObject json) throws JSONException{
                    JSONArray  jsonArray=json.getJSONArray("image");
                    String [] stringArray=new String[jsonArray.length()];
                    XMLSlideShow ppt = new XMLSlideShow();
                    Response result=null;
                    String uniquename=null;
                    try{
                        for(int i=0;i<jsonArray.length();i++){
                            XSLFSlide slide = ppt.createSlide();
                            stringArray[i]=(String) jsonArray.get(i);
                            byte[] picture=Base64.decodeBase64(stringArray[i].substring(22));
                            int idx = ppt.addPicture(picture, XSLFPictureData.PICTURE_TYPE_PNG);
                            ppt.setPageSize(new java.awt.Dimension(1600, 600));
                            //creating a slide with given picture on it
                            XSLFPictureShape pic = slide.createPicture(idx);
                            String outputDirectory = propertyUtil.getProperty("output.save.uri");
                            SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("ddMMyyyyHHmmss");
                            String date = DATE_FORMAT.format(new Date());
                             uniquename = 1 + "-" + date + "." + "pptx";
                            String streamPath = outputDirectory+uniquename;
                          //creating a file object 
                            File file=new File(streamPath);
                            FileOutputStream out = new FileOutputStream(file);
                          //saving the changes to a file
                            ppt.write(out);
                            StringResponse  response=new StringResponse();
                            response.setUniqueName(uniquename);
                            result=Response.ok().entity(response).build();
                          }
                    }catch(JSONException e){
                        log.info("Error in json Object");
                        result=Response.status(304).entity("Error in json Object").build();
                    }
                    catch(IOException e){
                        log.info("Error while creating PPT Document");
                        result=Response.status(304).entity("Error while generation PPT").build();
                    }  

共有1个答案

章永安
2023-03-14

您将参数作为二进制或输入流在JSONObject中。确保您没有使用if条件获得null JSONObject。而且,您已经编写了:

byte[] picture=Base64.decodeBase64(stringArray[i].substring(22));

您正在字符串本身的开头从索引22处删除字符串。确保你以正确的方式阅读字符串。因为在< code >解密时,由于特定索引处的子字符串,您获取的二进制字符串可能会丢失某些内容。即使你漏掉了一个字符,你的二进制字符串也没有意义。

 类似资料:
  • 我想验证我写的多线程应用程序的设计,并在几点上得到澄清/再保证。我提前为这么长的帖子道歉——我想把它分成几个问题,但是我必须引用相同的代码,它们似乎都是相互关联的,所以我选择把所有的东西放在一个帖子里。如果这是不合适的-请让我知道,我会打破这成多个职位。 这是我所拥有的: BatchService(Spring Singleton bean):接受上传指定目录或zip存档的请求。为此,它拥有Exe

  • 这里和这里的类似问题并没有帮助我解决这个问题。 我使用的是KeyClope 4.4。0来保护我的REST服务,该服务是使用Spring Boot实现的,我使用React作为前端。 当前端(在上运行)调用并被重定向到KeyCloak登录页面时,我得到一个CORS错误。 错误是: localhost/:1未能加载http://localhost:8080/login:重定向自'http://local

  • 本文向大家介绍Android中NavigationView的使用与相关问题解决,包括了Android中NavigationView的使用与相关问题解决的使用技巧和注意事项,需要的朋友参考一下 一、基本使用 1. NavigationView 在 design 库中,添加依赖(最新的是 23.2.0); 2. 然后在 DrawerLayout 布局中添加 NavigationView ; 其中需要注

  • 我有一个以输入类型为数字的编辑文本。但是在完成一项任务后,如果我再次单击编辑文本,输入类型将更改为文本。 大约一秒钟后,它会将输入类型显示为数字,很快它就会自动将编辑文本的输入类型更改为文本。即使我点击按键,编辑文本上也不会显示任何内容。 我检查了logcat,我得到了这个: 我检查了这个链接:getExtractedText on inactive InputConnection warning

  • 我正在寻找以下问题的答案。 > 在服务器断开的情况下,Camel SFPT是否支持resume功能。我注意到,一旦从基础JSCH库抛出SocketTimeout/IOException异常,就会删除.inprogress文件。我的期望是,一旦连接可用,camel应该重新建立连接,并从它离开的地方恢复下载。 connectTimeout、timeout和soTimeout等参数不起作用。在windo

  • 本页列出了所有Apache遵守的相关标准,并伴有简要描述。 除了下面列出的参考信息,下列资源也值得看看: http://purl.org/NET/http-errata - HTTP/1.1 勘误表 http://www.rfc-editor.org/errata"http://ftp.ics.uci.edu/pub/ietf/http/"> http://ftp.ics.uci.edu/pub/